Javaの複数行の入力を取得し、入力文字列の末尾を決定する方法

パブリック静的無効メイン(文字列[] args){
スキャナSC =新しいスキャナ(System.in)。
リスト<リスト>リスト=新しいのArrayList <リスト>();
リストリスト1 =新しいArrayListを();
文字列s = NULL;
(!(S = sc.nextLine())に等しい( "")){ながら
文字列[] STR = s.split( "")。
以下のために(INT iが= 0; I <str.length; I ++){
list1.add(Integer.parseInt(STR [I]))。
}
list.add(LIST1)。
}
のSystem.out.println(リスト)。
}

ネットワークから仕上げ

終了を決定するのはなぜないスキャナhasNextLine方法?

あなたが書いたファイルからの入力ソーススキャナは問題ありません場合は、入力ソースに応じて、hasNextLine方法スキャナは、異なる結果を生成します
が、このときのコンソール(System.in)からのご入力はプログラムがSCに実行されたとき(何も入っていないため).hasNextLine()メソッドが空の場合、hasNextLine方法が見つから
あなたがキーボードで入力した後になるまでスレッドをブロックします続けますが、問題は、一度プログラムは任意の文字を入力することです私はあなたがhasNextLine入力してと同様に、入力されたと思う
方法は、あなたが死のサイクルこのサイクルになり、必ずしもtrueを返すすべてが踊ることができることはありません!

それでは、どのようにあなたがプログラムが入力を終了させるためにあると思いますか、むしろそれに対処するため、通常の入力として、あなたの入力のいずれよりも、答えはCtrl + Zです!CTRL + zは、あなたの終わりを入力することで表現することが後にしてください!これが最後の符号がEOFに相当しています

マシンのテストは、私は複数行の文字列を読み取る必要がある、とプログラムへの入力が自動的にシステム自体に入力され、私は手動で私の定義のいずれかのより多くのスペースまたはターミネータを追加することはできません。

私はこれらを受け取ることができる方法を知っておく必要がありますので、今、私が直接、プログラムの実行を書き込むことができる手段、入力した方法はありません、システムが自動的に特定のパターンデータを入力します、私は、Ctrl + Zを使用する前に言って、それについて考えます入力フォーマット、およびどのように入力の終わり。

問題は、どのようにああを解決するには?

hasNext()は
現在走査位置の後にスキャナ次のセグメントが存在するか否かを判断します。
hasNextLine()は、
このスキャナの入力に別の行がある場合、それは真を返します。
次の()
見つけ戻るフルマークからスキャナ。
nextLine()
この電流ライン過去スキャナ、入力スキップ戻ります。
nextInt()は、
コンソールスキャンデータ整形を返します。

公開された254元の記事 ウォン称賛23 ビュー50000 +

おすすめ

転載: blog.csdn.net/qq_30242987/article/details/104694228
おすすめ