1

我想知道我是否可以这样做,以便循环可以通过键入 end 或 -1 之类的命令来结束。我现在拥有的是

while ( gradeCounter <= 10 ) // loop 10 times

我想知道如何让它无限循环直到我结束它。

4

3 回答 3

2

只需创建一个while循环和一个条件来打破它

while(true){
      String inputString = //Get user input here       

      if(inputString.equals("Your Termination Text"))
           break;

    }

如果您想知道如何获取控制台输入,这里是 Java 的一种方法:如何从 System.console() 获取输入

根据下面的评论进行编辑

double grades = 0;
int entries = 0;
while(true){
      String inputString = //Get user input here       
 
      if(inputString.equals("Your Termination Text"))
           break;
      else{
        grades += Double.parseDouble(inputString);
        entries++;
      }
 }
 double averageGrade = grades / entries;

请记住,这不包括不是数字的文本,也不是您的终止文本。从这个问题来看,这听起来像是一个低级别的 CIS 课程,我认为这不会是一个问题。但是,如果是这样,您需要学习如何尝试捕获和更多输入验证。

于 2013-10-01T19:48:06.777 回答
1

对的,这是可能的。只要确保,有一个不同的线程可以处理某种输入......

public class MyBreakableInfiniteLoop

    public static void main(String[] args) {

        MyRunnable r = new MyRunnable();
        new Thread(r).start();

        System.out.println("Press Enter to stop thread");
        new Scanner(System.in).readLine();
        r.stop = true;

    }

    public static class MyRunnable extends Runnable {
       public volatile boolean stop = false;
       public void run() { 
           while(!stop) { 
              //do nothing, preferably in a meaningful way 
           } 
       }
    }


}

(另外,我没有考虑到kill -9“打破无限循环的输入”......)

于 2013-10-01T20:00:40.987 回答
1

While(true) {}创建一个无限循环。循环内的一个break命令从它中跳出。您必须检测循环内将发生的任何类型的事件以确定是否应该中断。

我不知道您在更大规模地做什么,但使用不会无限循环并吸收处理能力的线程可能是一个更好的主意。

于 2013-10-01T19:50:14.363 回答