java 用 for 递增只能运行一次

标签 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 个美国城市都有“有轨电车”。

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

最佳答案

相反,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 。

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

关于java 用 for 递增只能运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926539/

相关文章:

php - 打印一个图案以显示最多 5 行和 5 列的数字,例如 5 4 3 2 1 并在下一行 4 3 2 1 5 到第 5 行

java - 在数组内部循环数组

java - 高效的 BigDecimal 上下舍入到两位小数

java - 使用 ImageIO 从具有 Alpha 透明度的图像中保存具有索引透明度的 GIF

java - 如何只在for循环中的所有条件都为真时才返回true?

c - 回复 : check for every X increment in C

mysql - 增加mysql表中的所有值

java - 更改输出编号

java - 在LibGDX scene2d中,更改选择框的项目后,它不再具有默认监听器

c -++struct.field 中的运算符层次结构