2013-04-25 18 views
7
public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     try { 
      while (scan.hasNextLine()){ 

       String line = scan.nextLine().toLowerCase(); 
       System.out.println(line); 
      } 

     } finally { 
      scan.close(); 
     } 
    } 

入力の入力が完了した後でプログラムを終了する方法はなんですか? スキャナがまだ後に続けれるように、いくつかの私は、私が試した...入力を入力する継続する をつもりだと仮定すると、「入力」:入力が完了したらスキャナを終了するにはどうすればよいですか?

if (scan.nextLine() == null) System.exit(0); 

if (scan.nextLine() == "") System.exit(0); 

彼らは動作しませんでした....プログラムは継続して元の意図を失います

答えて

18

問題は、あなたのようなプログラムが、ユーザーが...何らかの形で入力を完了したことを知らないということです。何とか...それを伝えます。

  • マーカー「ファイルの末尾を」入力します。

    は、ユーザーがこれを行うことができます2つの方法があります。 UNIX上で(通常は)CTRL +D、およびWindows にCTRL +Zだという。その結果、hasNextLine()falseに戻ります。

  • 「私は完了しました」という意味でプログラムによって認識される特別な入力を入力してください。たとえば、空行や "exit"のような特別な値にすることができます。プログラムはこれを具体的にテストする必要があります。

(あなたがも考えられるタイマーを使用して、彼らはN秒、またはN分間の任意の入力を入力しない場合は、ユーザーが終了したことを前提としています。しかし、それは実行するユーザーフレンドリーな方法ではありませんでしたこれ。)


あなたの現在のバージョンが失敗している理由は、空の文字列をテストするために==を使用していることです。 equalsまたはisEmptyのいずれかの方法を使用する必要があります。

大文字と小文字の区別(例:「終了」対「終了」)と先頭または末尾の空白(「終了」対「終了」など)の影響について考慮する必要があります。代わりに、しばらくの間ループあなたの入力の終わりを示す特定のパターンを探す必要があります

0

この方法では、exitコマンドまたはexit条件を明示的に作成する必要があります。例えば:

String str = ""; 
while(scan.hasNextLine() && !((str = scan.nextLine()).equals("exit")) { 
    //Handle string 
} 

また、あなたは文字列を処理しなければならない.equals()ない==と例に等しいです。 ==は、2つの文字列のアドレスを比較します.2つの文字列は、実際には同じオブジェクトでない限り、真ではありません。

3

.equals()ではなく==を使用して文字列比較が行われます。

だから、scan.nextLine().equals("")を試してください。

1

は、例えば言う「##」この場合

// TODO Auto-generated method stub 
    Scanner scan = new Scanner(System.in); 
    try { 
     while (scan.hasNextLine()){ 

      String line = scan.nextLine().toLowerCase(); 
      System.out.println(line); 
      if (line.equals("##")) { 
       System.exit(0); 
       scan.close(); 
      } 
     } 

    } finally { 
     if (scan != null) 
     scan.close(); 
    } 
+0

ありがとうございました。 – user2318175

0

、私は、やる使用することをお勧めいたします。

Scanner sc = new Scanner(System.in); 
    String input = ""; 
    do{ 
     input = sc.nextLine(); 
     System.out.println(input); 
    } while(!input.equals("exit")); 
sc.close(); 

プログラムを終了するには、単に文字列ヘッダーを割り当てるだけです。出口。入力がexitと等しい場合、プログラムは終了します。さらに、ユーザーはcontrol + cを押してプログラムを終了できます。

0

コンソールから入力の次の行を確認して、終了エントリ(存在する場合)を確認できます。

は、あなたの終了エントリは、あなたはこのコードを試してみてください「終了」されているとします - あなたは/閉じるスキャナを終了したいとき

Scanner scanner = new Scanner(System.in); 
    try { 
     while (scanner.hasNextLine()){ 

      // do your task here 
      if (scanner.nextLine().equals("quit")) { 
       scanner.close(); 
      } 
     } 

    }catch(Exception e){ 
     System.out.println("Error ::"+e.getMessage()); 
     e.printStackTrace(); 
}finally { 
     if (scanner!= null) 
     scanner.close(); 
    } 

は、このcode.Your終了行は、あなたが入力する必要があります試してみてください。

関連する問題