我无法弄清楚这一点。我有以下代码:
import java.util.ArrayList;
import java.util.List;
public class TestLoop {
public static List<String> strArray = new ArrayList<String>();
static {
strArray.add("Some");
strArray.add("Silly");
strArray.add("String");
}
public static void main(String[] args) {
int doNotPrintIndex = 1;
int beginIndex = doNotPrintIndex == 0 ? 1 : 0;
for (int i = beginIndex; i < strArray.size() && i != doNotPrintIndex; i++) {
System.out.println(strArray.get(i));
}
}
}
基本上,如果我有ArrayList
,我绝不想打印doNotPrintIndex
内索引“ArrayList
”处存储的内容。但是,在以下情况中,循环仅执行一次。我的逻辑中有什么问题吗?
答案 0 :(得分:5)
i
点击doNotPrintIndex
后,您的循环就会退出。试试这个循环:
for (int i = beginIndex; i < strArray.size(); i++) {
if (i != doNotPrintIndex) {
System.out.println(strArray.get(i));
}
}
或者,您可以一个接一个地使用两个循环:
for (int i = beginIndex; i < doNotPrintIndex; i++) {
System.out.println(strArray.get(i));
}
for (int i = doNotPrintIndex + 1; i < strArray.size(); i++) {
System.out.println(strArray.get(i));
}
答案 1 :(得分:2)
因为beginIndex
为0且doNotPrintIndex
为1,所以在1次迭代后,i == doNotPrintIndex并且循环停止。你需要从for循环中删除它并在循环中使它成为if语句:
for (int i = beginIndex; i < strArray.size(); i++) {
if(i != doNotPrintIndex)
System.out.println(strArray.get(i));
}
答案 2 :(得分:1)
for循环中的条件指示循环何时应该停止。您应该将doNotPrintIndex的测试放入循环体中。
答案 3 :(得分:0)
好吧,它应该循环一次:)你看,在你的for循环中这样工作:它检查条件1和2:i=0, i<x && i!=1
如果这个条件为真,它会进入for循环括号内。在完成那里的操作之后,它会回来并改变我:i++
。
因此当你的i == 1时,条件2为假,循环结束。这就像你有for(i=0; i<3; i++) {...}
并且在最后一次增量之后i等于3.条件i&lt; 3是假的,所以循环结束。