打破无限循环

时间:2011-01-19 17:11:59

标签: java events loops break

我有一个类似的无限循环:

while(true) {
    //do something
}

我希望能够使用一个用于exaple escape键的键来中断循环。我认为它可以使用事件完成,但因为我是java新手,我不能这样做。 谁能帮我?提前谢谢!

在while循环中,程序从usb读取一个值,然后使用套接字通过网络发送它。我的程序是服务器并将字节发送到客户端。我希望能够用密钥停止该服务器!


在while循环中,程序从usb读取一个值,然后使用套接字通过网络发送它。我的程序是服务器并将字节发送到客户端。我希望能够用密钥停止该服务器!

7 个答案:

答案 0 :(得分:3)

纯java本身没有键输入的概念。您通常从特定的IO模块(例如,基于控制台,基于AWT,基于Swing等)获取它们。

然后你会检查条件或休息时间。 如果您的新闻通知是异步的,您可能会设置一些标志(例如,breakRequested),并检查此标志并在其更改时中断。

要访问控制台,请查看http://download.oracle.com/javase/6/docs/api/java/io/Console.html 但请注意Stackoverflow上有关此工具的许多问题。

答案 1 :(得分:3)

使用break关键字。例如:

try {
  Console console = new Console();
  while(true)
  {
    String input = console.readLine();
    if("quit".equals(input))
    {
       break;
    }
    // otherwise do stuff with input
 }
catch(IOException e)
{
  // handle e
}

许多程序员认为以下内容更具可读性:

try
{
  Console console = new Console();
  for(String input = console.readLine(); !"quit".equals(input); input = console.readLine())
  {
     // do stuff with input
  }
}
catch(IOException e)
{
  // handle e
}

答案 2 :(得分:1)

将(true)更改为while(!isStopped()){...}

之类的内容

答案 3 :(得分:0)

请记住,当您的应用程序位于该块中并且正在旋转时,您的应用程序的其他任何部分都无法处理指令。除非您将工作进程分离为新线程并在两者之间共享变量/标志。这样,当按下某个键时,通过捕获它的任何方法,您可以修改一个布尔变量,该变量将转移到您的线程。所以你可以设置你的循环如下:

while(_flag) 
{
   //Spin
}

答案 4 :(得分:0)

我创建了这个程序,如果按下一个特定的键,它会终止一个无限循环:

class terminator {
    public static void main(String args[]) throws java.io.IOException {
        char press, clear;

        for(;;) {
            System.out.print("Press any key to get display, otherwise press t to terminate:  ");
            press = (char)System.in.read();

            System.out.println("You Pressed: "+ press);

            do {
                clear = (char)System.in.read();
            } while(clear != '\n');
            System.out.println("\n");
            if (press=='t'|press=='T') {
                System.out.println("Terminating Program......Program Terminated!");
                break;
            }
        }
    }
}

答案 5 :(得分:0)

用条件打破无限循环。

公共课WhileInf {

public static void main(String[] args)  {
    int i = 0;

    while (true) {
        if (i == 10) {
            break;
        }
        System.out.println("Hello");
        i++;
    }
}

}

答案 6 :(得分:-1)

while(true)
{
   if(   )
   {
        break;
   }
   else if()
   {
        break;
   }
   else
   {
        do something;
        break;
   }
}