преобразование нескольких переменных в массив на java

#java #eclipse

#java #eclipse

Вопрос:

У меня есть класс: fish и rectFish, и вместо создания fish1, fish2, rect1, rect2 и т.д., Я хотел бы создать массив для хранения переменной, а затем я хотел бы выполнить цикл через него, чтобы получить значения для выполнения определенных действий, таких как уменьшение оценки и т.д. У меня есть пустой цикл, и я хотел бы поместить эти значения в цикл ниже:

       Fish[] fish = new Fish [6];
      Rect[] fishRect = new Rect [6];

    Fish fish1 = new Fish(200, 200);
    Rect fishRect1 = new Rect(200, 200, 50, 30);

    Fish fish2 = new Fish(100, 500);
    Rect fishRect2 = new Rect(100, 500, 50, 30);

    Fish fish3 = new Fish(100, 300);
    Rect fishRect3 = new Rect(100, 300, 50, 30);
  

И это мой цикл (на самом деле не работает)

 for (int i=0; i < fish.length; i   ) {
            if (sharkRect.eats(fishRect[i])) 
            {
                /*eatFishSound.play();
                fish[i].die();
                fishRect[i].die();
                score.increasehealthBy();
                score.decreaseFish();*/
                System.out.print(fishRect[i]);
            }
        }
  

Ответ №1:

Вы можете создать значения массива в его конструкторе, а затем выполнить их итерацию с помощью for-each:

 Fish[] fishArr = {
    new Fish(200, 200), 
    new Fish(100, 500),
    new Fish(100, 300)
};
  

Для каждого цикла:

 for (Fish fish : fishArr) {
    System.out.println("Fish: "   fish);
}
  

Является таким же (но более элегантным), как:

 for (int  i = 0; i < fishArr.length; i  ) {
    Fish fish = fishArr[i];
    System.out.println("Fish: "   fish);
}
  

Или вы можете использовать List для этого:

 List<Fish> fishList = Arrays.asList(
    new Fish(200, 200), 
    new Fish(100, 500),
    new Fish(100, 300)
);

for (Fish fish : fishList) {
    System.out.println("Fish: "   fish);
}

// since Java 8:
fishList.forEach(fish -> System.out.println("Fish: "   fish));
  

Начиная с Java 9, вы можете использовать of статический фабричный метод:

 List<Fish> fishList = List.of(
    new Fish(200, 200), 
    new Fish(100, 500),
    new Fish(100, 300)
);
  

Комментарии:

1. Спасибо! можете ли вы отредактировать цикл for, чтобы он соответствовал чему-то похожему на мой? for (int i=0; i < fish. длина; i ) {

2. извините, я относительно новичок в Java, и нас этому еще не учили.

3. @CharlesXavier Я отредактировал свой ответ, чтобы объяснить варианты.

4. Спасибо, чувак! последний вопрос, я пытаюсь вывести это на экран, и я использую это, но это не рисуется: fishArr[i].draw(g); графика уже импортирована, и она рисовалась до создания массива.

5. Для этого вам следует создать новый вопрос. Я не знаю, какая графика и как вы ее используете, не видя вашего кода…