1

タイトルが正しいかどうかわかりません。私が聞きたいのは、メソッドの次の行が空の場合にループを停止する方法です。私は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");
            }
       }
    }

問題は、次の行が空であっても停止しないことです。

4

5 に答える 5

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

readLine()まず、ループの前に呼び出すことで最初の行がありません。次に、2 番目の条件を追加して、行が null でないときに行が空かどうかを確認できます。

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

これで、行が空になった場所、またはストリームに新しい行がない場所で停止するはずです。

于 2013-10-09T12:33:49.927 に答える
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 に答える
0

Scanner を使用すると、非常に古典的な方法である .hasNext() .next() メソッドを使用することもできます。ここでの例: BufferedReader ポインター

于 2013-10-09T12:39:36.407 に答える