我有一个类: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]);
}
}
答案 0 :(得分: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)
);