为什么这个for循环不能按预期工作?

时间:2014-06-24 13:21:14

标签: java string for-loop

我做了一个不能按预期工作的for循环。请参阅代码:

for (int i = 0; i < result.size(); i++) {
    s = s + "k";
    for (int ii = 0; ii < result.get(0).size(); ii++) {
        s = s + "\n";
        s = s + result.get(i).get(ii)[0];
    }
}

result.get(i).get(ii)[0]应输出一个成功输出的字符串,但问题是字符串s每次应包含&#34; k&#34; 在添加三个字符串之前,所以它应该是:

kString1

String2

String3

kString1

String2

String3

我只在字符串前一次获得&#34; k&#34; 。我知道i的值正在更新,因为result.get(i)正在使用更新的i给出结果。

解释result.get(i).get(ii)[0]

s是一个String,结果是ArrayList< ArrayList< String[]>>,这意味着它包含ArrayList< String[]>个对象和'ArrayList&lt;的每个对象。串[]&GT;是一个String数组。

编辑:我现在正在添加我得到的输出:

k

United King

["bakery","store","food","establishment"]

0

Oven Fresh Bakery

["bakery","store","food","establishment"]

1

5 Star CNG Pump Station

["gas_station","establishment"]

2

应该有一个&#34; k&#34;在0,1和2之后。

1 个答案:

答案 0 :(得分:2)

您的嵌套循环条件似乎不正确,

for (int ii = 0; ii < result.get(0).size(); ii++) {

应该是

for (int ii = 0; ii < result.get(i).size(); ii++) {

修改(根据您的评论和编辑,下次 - 请加入Short, Self Contained, Correct (Compilable), Example以获得更快的帮助)

ArrayList<ArrayList<String[]>> result = new ArrayList<ArrayList<String[]>>();
StringBuilder sb = new StringBuilder();
ArrayList<String[]> t = new ArrayList<String[]>();
t.add(new String[] { "String1" });
t.add(new String[] { "String2" });
t.add(new String[] { "String3" });

result.add(t);
result.add(t);

for (int i = 0; i < result.size(); i++) {
    for (int ii = 0; ii < result.get(i).size(); ii++) {
        if (i != 0 || ii != 0) {
            sb.append("\n");
        }
        if (ii == 0) {
            sb.append("k");
        }
        sb.append(result.get(i).get(ii)[0]);
    }
}
System.out.println(sb.toString());

输出

kString1
String2
String3
kString1
String2
String3