如果方法读取下一行为空,则停止循环

时间:2013-10-09 12:32:27

标签: java

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

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");
            }
       }
    }

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

5 个答案:

答案 0 :(得分:2)

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

首先,你在循环之前调用readLine()错过了第一行。 其次,你可以添加第二个条件来检查当行不为空时该行是否为空:

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

现在,它应该停在一条线为空或者流中没有新线的地方。

答案 1 :(得分:1)

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

String command = br.readLine();

String command;

答案 2 :(得分: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);
  }

答案 3 :(得分:0)

使用扫描仪,您还可以使用.hasNext()。next()方法,这是一种非常经典的处理方式。示例:BufferedReader pointer

答案 4 :(得分: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); }

这应该可以正常工作。