1

我不知道标题是否正确。我想问的是,如果方法的下一行为空,如何停止循环。我有两种方法:

public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    rrr thisObj = new rrr();
    String command = br.readLine();
      while ((command = br.readLine())!=null) {
         int b=0;
         thisObj.perintah(b,command);
      }
}  

public void perintah(Integer indek, String PesanSumber)
   {
       String Pesan = PesanSumber.trim();
       int panjang = Pesan.length();
       if (panjang >=3)
       {
           if (Pesan.toLowerCase().trim().substring(0, 3).equals("log") )
            {
              System.out.println("bla bla bla");
            }
           else if (Pesan.toLowerCase().trim().substring(0, 4).equals("move"))
            { 
              System.out.println("bla bla bla");
            }
           else if (Pesan.toLowerCase().trim().substring(0, 4).equals("move"))
            { 
              System.out.println("bla bla bla");
            }
       }
    }

问题是如果我运行它不会停止,即使下一行是空的。

4

5 回答 5

3
 String command = br.readLine();
 while ((command = br.readLine())!=null) {

首先,您在readLine()循环之前调用会丢失第一行。其次,您可以添加第二个条件来检查行不为空时是否为空:

 String command;
 while ((command = br.readLine())!=null && !command.isEmpty()) {

现在,它应该在行为空或流中没有新行的地方停止。

于 2013-10-09T12:33:49.927 回答
1

你试图初始化字符串两次,读取一个空行,所以只需更改

String command = br.readLine();

String command;
于 2013-10-09T12:42:25.070 回答
0

您可以尝试以下。现在它将停止。

 String command;
  while ((command = br.readLine())!=null) {
     int b=0;
     thisObj.perintah(b,command);
  }

在您的代码中

  String command = br.readLine(); // you read empty line
  while ((command = br.readLine())!=null) { // But command will override by next line
     int b=0;
     thisObj.perintah(b,command);
  }
于 2013-10-09T12:36:49.350 回答
0

使用 Scanner,您还可以使用 .hasNext() .next() 方法,这是一种非常经典的做事方式。此处示例:BufferedReader 指针

于 2013-10-09T12:39:36.407 回答
0

我只是在浏览您的代码, String command = br.readLine(); 应该替换为 String command = ""; 否则您的第一个输入将被错过。为了回答您的问题,System.in 不返回 null,因此您必须检查空字符串为 String command;// br.readLine(); while (!(command = br.readLine()).isEmpty()) { int b = 0; thisObj.perintah(b, command); }

这应该可以正常工作。

于 2013-10-09T13:01:43.077 回答