java 用 for 递增只工作一次
java incrementing with for works only once
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 个美国城市都得到 "Tramways"。
我不明白为什么...
相反,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>();
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 个美国城市都得到 "Tramways"。
我不明白为什么...
相反,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>();