После добавления моих экземпляров в мою коллекцию списков массивов, как мне сделать так, чтобы я мог вводить переменные, которые мне нужны для моих экземпляров во время итерации? - PullRequest
0 голосов
/ 18 января 2019

Я практикую программирование на Java как новичок и создаю проект, в котором у меня есть классная машина, а также другие классы, такие как carParts, колеса, двигатель и топливо.

Я нахожусь в той части, где я добавляю экземпляры своих carParts в свой класс Car, а затем добавляю их в ArrayList, где я пытаюсь их перебрать.

Я попытался наметить все и думаю, что просто запутался в том, что указывает на что.

То, что у меня было изначально, было чем-то вроде

List<CarPart> carParts = new ArrayList<CarPart>();
carParts.add(myWheels.wheels(4));
carParts.add(myEngine.engine("good engine"));
carParts.add(myFuel.(100)); `

Но это просто запустило эти три, прежде чем я даже начал выполнять итерации, поэтому я просто изменил его на

List<CarPart> carParts = new ArrayList<CarPart>();
carParts.add(myWheels);
carParts.add(myEngine);
carParts.add(myFuel); `

чтобы я мог добавить переменные в процессе итерации

public class Car {

  Wheels myWheels = new Wheels();
  Engine myEngine = new Engine();
  Fuel myFuel = new Fuel();

  public void run() {

    //have to make wheels(4), engine("good engine"), and fuel(100)

    List<CarPart> carParts = new ArrayList<CarPart>();
    carParts.add(myWheels);
    carParts.add(myEngine);
    carParts.add(myFuel);

    /*
    myWheels.wheels(4);
    myEngine.engine("good engine");
    myFuel.fuel(10);    
    */

    Iterator<CarPart> carPartIterator = carParts.iterator();
    while (carPartIterator.hasNext()) {
        //run each individually
        System.out.println(carPartIterator.next());
    }
  }
}

Когда я добавляю

carParts.add(myWheels.wheels(4));
carParts.add(myEngine.engine("good engine"));
carParts.add(myFuel.fuel(100));

Я получаю правильный вывод, но не в правильном месте, так что это что-то вроде:

Correct Output for wheels
Correct Output for engine
Correct Output for fuel

null
null 
null 

То, что я хочу, - это правильные выходные данные, которые будут помещены вместо null?

1 Ответ

0 голосов
/ 18 января 2019

Вы не указали это в своем сообщении, но я предполагаю, что это происходит.

List<CarPart> carParts = new ArrayList<CarPart>();
carParts.add(myWheels.wheels(4));
carParts.add(myEngine.engine("good engine"));
carParts.add(myFuel.(100));

Методы, которые вы добавляете, содержат внутри себя операторы print ln, но не возвращают значение.

То, что вы, похоже, хотите отсюда, это распечатать эти значения, когда вы выполняете итерацию по автомобильной части. Если у всех ваших автозапчастей есть общий метод, т. Е. public String getString(), который возвращает нужную вам строку информации, вы можете сделать следующее:

Iterator<CarPart> carPartIterator = carParts.iterator();
while (carPartIterator.hasNext()) {
System.out.println(carPartIterator.next().getString());
}

Причина, по которой вы получаете нулевые значения, заключается в том, что вызываемые вами методы не возвращают печатаемое значение, например String. Опять же, я не уверен в этом, но это то, что я могу вывести из вашего поста.

Проверьте это руководство по возвращению значений из методов для получения дополнительной информации.

...