Метод createNewPlanet(String) должен добавлять переданную планету в список planets на следующую позицию после Земли

Рейтинг: 0Ответов: 1Опубликовано: 25.06.2023
package com.javarush.task.pro.task12.task1213;

import java.util.ArrayList;

/* 
Солнечная система
*/

public class Solution {
    public static ArrayList<String> planets = new ArrayList<>();

    public static void main(String[] args) {
        addPlanets();
        print();
        createNewPlanet("Звезда Смерти");
        print();
    }

    public static void createNewPlanet(String name) {
  // Находим индекс Земли в списке планет
  int earthIndex = planets.indexOf("Earth");
  // Добавляем новую планету на следующую позицию после Земли
  planets.add(earthIndex + 1, name);
}


    public static void addPlanets() {
        planets.add("Меркурий");
        planets.add("Венера");
        planets.add("Земля");
        planets.add("Марс");
        planets.add("Юпитер");
        planets.add("Сатурн");
        planets.add("Уран");
        planets.add("Нептун");
    }

    public static void print() {
        for (int i = 0; i < planets.size(); i++) {
            System.out.println(String.format("%s — %d-я планета от Солнца", planets.get(i), (i + 1)));
        }
        System.out.println();
    }
}

Ответы

▲ 0

Так у вас список заполнен названиями планет на русском языке, а в методе createNewPlanet вы ищете Землю по её английскому названию "Earth".

Замените название на русское:

public static void createNewPlanet(String name) {
    // Находим индекс Земли в списке планет
    int earthIndex = planets.indexOf("Земля");
    // Добавляем новую планету на следующую позицию после Земли
    planets.add(earthIndex + 1, name);
}

Или же создайте метод для вставки новой планеты после любой заданной:

public static void createNewPlanet(String name) {
    createNewPlanetAfter(name, "Земля");
}

public static void createNewPlanetAfter(String newName, String planet) {
    // Находим индекс планеты в списке и добавляем новую планету на следующую позицию
    planets.add(planets.indexOf(planet) + 1, newName);
}