Java 为什么这个for循环没有按预期工作?
我做了一个for循环,但没有按预期工作。请参阅代码:Java 为什么这个for循环没有按预期工作?,java,string,for-loop,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]; } } 我只得到了一个“k”之前的字符串一次。我知道I的值正在更新
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];
}
}
我只得到了一个“k”之前的字符串一次。我知道I
的值正在更新,因为result.get(I)
正在使用更新后的I
给出结果
解释结果.get(i).get(ii)[0]
:
s
是一个字符串,结果是一个ArrayList
,这意味着它包含ArrayList
对象,“ArrayListk
United King
["bakery","store","food","establishment"]
0
Oven Fresh Bakery
["bakery","store","food","establishment"]
1
5 Star CNG Pump Station
["gas_station","establishment"]
2
0、1和2后面应该有一个“k”。嵌套循环条件似乎不正确
for (int ii = 0; ii < result.get(0).size(); ii++) {
什么是
s
?我指的是哪种类型。不要使用string=string+additionalValue
。您应该使用StringBuilder
及其append
方法来构建字符串。此外,为了能够帮助您,我们需要简短而完整的示例,让我们能够真实地再现您的问题。关于实际输出和预期输出的信息也会有帮助。您缺少代码的重要部分,也就是我认为我们根本帮不了您。@Kabulan0lak s是一个字符串。@我编辑了我的帖子是的,我想知道他想要零索引做什么,但我想不出来。接得好。我没有解决这个问题,我使用了0,因为我知道每个对象的大小都是一样的。@Usman什么问题<代码>字符串3k将获得k
两次。你期望什么样的产出?您想要s=s+“\nk”吗代码>这样就可以换行了?另外,使用StringBuilder。问题是我没有得到字符串3k,我只得到一个换行符,后面跟着下一个对象(I)的String1,2,3。我需要这样:k>3字符串>k>3字符串>k…@Usman根据您的评论/编辑编辑。
for (int ii = 0; ii < result.get(0).size(); ii++) {
for (int ii = 0; ii < result.get(i).size(); ii++) {
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