在Java中将多个变量转换为数组

时间:2019-03-20 15:20:12

标签: 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 个答案:

答案 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)
);