java仅用于增加一次

时间:2015-08-10 18:24:23

标签: java for-loop increment

City[] array = new City[6];
String [] arr = {"Paris","London","Rome","Los Angeles","New York","San Francisco"};
int [] arr2 = {200000, 100000, 80000, 60000, 50000, 45000};
String [] arr3 = {"Breitzel", "Statute of Liberty", "Tramways"};

for (int i = 0; i < 6; i++){
    if (i<3){
        City V = new City (arr[i], "EU", tab2[i]);
        array[i] = V;
    }

    else {
        for (int j = 0; j < 3; j++){
            Capitale C = new Capitale (arr[i], "USA", arr2[i], arr3[j]);
            array[i] = C;
        }
    }
}

第一个递增循环效果很好,创建城市的那个(System.out.printline显示City []得到6个元素,这是6个城市。

但是:每个美国3个城市应该分配一个arr3元素。这不起作用。 j没有增加,所有3个美国城市都有“电车”。

我不明白为什么......

1 个答案:

答案 0 :(得分:3)

相反,j正在递增。

但是内部循环的每次迭代都会覆盖先前迭代的结果。

最后一次迭代有j = 2,而arr3[2]是“Tramways”。

我想你会得到你正在寻找的结果。

for (int i = 0; i < 6; i++){
    if (i<3){
        City V = new City (arr[i], "EU", tab2[i]);
        array[i] = V;
    }
    else {
        Capitale C = new Capitale (arr[i], "USA", arr2[i], arr3[j - 3]);
        array[i] = C;
    }
}

那就是说,代码并不是那么清楚。 3的神奇价值尚不清楚。

您可以使用命名常量解决此问题:

final int INDEX_OF_FIRST_CAPITALE = 3;

或者让arr3与其他两个数组并行

String [] arr3 = { null, null, null, "Breitzel", "Statute of Liberty", "Tramways"};

或者使用从大写名称到吸引力的地图。

Map<String,String> = new HashMap<String,String>();