首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java只为工作增量一次

java只为工作增量一次
EN

Stack Overflow用户
提问于 2015-08-10 18:24:22
回答 1查看 61关注 0票数 0
代码语言:javascript
运行
复制
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个城市)。

但是:美国的三个城市都应该分配一个arr3元素。这不管用。J没有增加,美国的3个城市都得到了“有轨电车”。

我不明白为什么..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-10 18:26:29

相反,j正在增加。

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

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

我想你会得到你想要的结果。

代码语言:javascript
运行
复制
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的魔法值还不清楚。

您可以用一个命名常量来解决这个问题:

代码语言:javascript
运行
复制
final int INDEX_OF_FIRST_CAPITALE = 3;

或者让arr3与另外两个数组并行

代码语言:javascript
运行
复制
String [] arr3 = { null, null, null, "Breitzel", "Statute of Liberty", "Tramways"};

或者用一张从大写到景点的地图。

代码语言:javascript
运行
复制
Map<String,String> = new HashMap<String,String>();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31926539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档