为什么它是无限循环?

Sas*_*eth -50 java loops

我在Java中使用List集合,我使用迭代集合来处理已创建的整数值列表.

为什么这段代码会无限循环?

int i = 0;
int j = 0;

List<Integer> li = new ArrayList<Integer>();

for (i = 0; i < 10; i++) {
    li.add(i);
}

do {
    System.out.println(li.get(j));
} while(j < li.size());
Run Code Online (Sandbox Code Playgroud)

Gok*_* KP 42

你忘了/错过了do...while循环增加计数器变量.

是否j++响钟声任何?


Anu*_*Jha 17

原因j总是不到li.size()


Kna*_*ģis 11

这是无限的,因为你永远不会改变j- 每次你读取第一个值时的值li.List<>当您阅读它们时,该集合不会删除项目.如果您需要这种行为,您应该寻找StackQueue收集.

do {
System.out.println(li.get(j));
j++; // you are missing this line
} while(j < li.size());
Run Code Online (Sandbox Code Playgroud)


New*_*ser 6

你忘了增加循环计数器变量(j)


Luk*_*itz 6

你忘了增加(j++)你j将在do你的第do- while循环.


小智 5

这是因为你没有对"j"的值执行任何递增或递减操作.因此,每次编译器将j的值设置为0并且循环运行无限循环,因为它找到do..while循环的条件为true.


Roh*_*hit 5

该行while(j < li.size());检查值j是否小于List

因为j =0并且0<10 (Which is your List size)总是如此,因此代码永远不会终止并且您进入无限循环.你可能会做这样的事情

do {
  System.out.println(li.get(j));
  j++;
} while(j < li.size());
Run Code Online (Sandbox Code Playgroud)