Java无界for循环

Java无界for循环,java,loops,for-loop,Java,Loops,For Loop,无界循环:在该循环中,其主体重复的次数未知 预付款e、 g.重复此操作,直到用户键入“q”退出 这是对无界for循环的解释。我不明白,有人能给我举个例子吗?提前感谢有界循环是具有已知迭代计数的循环,如: for(int i=0;i<10;i++){ } 或者像@Fildor中的例子,一个不带结束条件的for循环。 请注意,此循环是无限的,直到如上所述,出现break语句或某些异常(此循环类似于while(true)): 下面的代码与您发布的定义完全相同。这仅仅意味着当程序员键入代码时,

无界循环:在该循环中,其主体重复的次数未知 预付款e、 g.重复此操作,直到用户键入“q”退出


这是对无界for循环的解释。我不明白,有人能给我举个例子吗?提前感谢

有界循环是具有已知迭代计数的循环,如:

for(int i=0;i<10;i++){

}
或者像@Fildor中的例子,一个不带结束条件的
for
循环。 请注意,此循环是无限的,直到如上所述,出现
break
语句或某些异常(此循环类似于
while(true)
):


下面的代码与您发布的定义完全相同。这仅仅意味着当程序员键入代码时,不知道while循环体将运行多少次

BufferedReader br = null;

try {

    br = new BufferedReader(new InputStreamReader(System.in));

    while (true) {

        System.out.print("Enter something : ");
        String input = br.readLine();

        if ("q".equals(input)) {
            System.out.println("Exit!");
            System.exit(0);
        }

        System.out.println("input : " + input);
        System.out.println("-----------\n");
    }

} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (br != null) {
        try {
            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

代码来源:

看,在for循环中,您可以设置计数器以及当计数器达到循环结束条件时,例如for(int i=0;i<10;i++)。 如果需要无界循环(当您不知道需要多少次迭代,但有一些条件可以完成时),可以设置以下条件:

for ( ; ; ) {
   if (condition == true) exit from loop;
} 

或者使用
循环,我认为这对无界循环更好。

无界循环也可能是由于逻辑错误:

例如:

int i;
for(i=0;i!=i+1;++i){
    //System.out.println(i);
}
System.out.println(i); // never prints
以下是一个例子:

import java.io.IOException;

public class Class {

  public static void main(String... args) throws IOException {
    int count = 0;
    for (char c = ' '; c != 'q'; c = (char) System.in.read()) {
      System.out.println("current value of c: " + c);
      System.out.println("Number of keystrokes so far: " + count++);
    }
  }
}

(;;)的
=不执行任何操作的循环的无界值。或者使用(;;)if(((char)System.in.read())==“q”)break的示例
有界循环可以执行预先未知的多次,例如
for(int i=0,m=new Random().nextInt(10);i。这是一个计算机科学问题:如果你想知道为什么有人关心循环是否有界,那么最好从道格拉斯·霍夫斯塔特发明的“BlooP”和“FlooP”编程语言开始。我不是一个会看字节码的人。但事实上,我想如果使用带break on条件的(;;)或while,它将被优化为相同的字节码。至少我希望如此。
int i;
for(i=0;i!=i+1;++i){
    //System.out.println(i);
}
System.out.println(i); // never prints
import java.io.IOException;

public class Class {

  public static void main(String... args) throws IOException {
    int count = 0;
    for (char c = ' '; c != 'q'; c = (char) System.in.read()) {
      System.out.println("current value of c: " + c);
      System.out.println("Number of keystrokes so far: " + count++);
    }
  }
}