#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. Для этого вам следует создать новый вопрос. Я не знаю, какая графика и как вы ее используете, не видя вашего кода…