JavaにおけるnextとnextLineの使い方の比較を浅く分析する

1271 ワード

JAvaのnextとnextLineの使い方の違い:
next()は必ず有効文字を読み取ってから入力を終了することができ、有効文字を入力する前に遭遇したスペースキー、Tabキー、Enterキーなどの終了子next()メソッドは自動的に削除され、有効文字を入力した後にのみnext()メソッドはその後に入力したスペースキー、Tabキー、Enterキーなどをセパレータまたは終了子と見なします.
簡単に言えば、next()は、このスキャナからの次の完全なタグを検索して返します.
完全タグの前後は区切りモードに一致する入力情報であるためnextメソッドではスペース付き文字列は得られない.
一方、nextLine()メソッドの終端子はEnterキーにすぎません.すなわち、nextLine()メソッドはEnterキーの前のすべての文字を返し、スペース付き文字列を得ることができます.

s1=sc.next(); 
s2=sc.nextLine();

実行結果: :home
: :home

nextLine()は、next()によって削除されたEnterを自動的に読み出して終了符としているので、s 2にキーボードから値を入力することはできません.
検証の結果、double nextDouble()、float nextFloat()、int nextInt()などの他のnextの方法がnextLine()と連用されている場合にこの問題があることを発見しました.解決策は、各next()、nextDouble()、nextFloat()、nextInt()などの文の後にnextLine()文を追加し、next()によって取り除かれたEnter終了子をフィルタリングすることです.
next()メソッドとnextLine()を混用する場合、各next()メソッドの後にsc.nextLine()を付ける必要があります.

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//       
sc.nextLine();
String[] name = new String[num];
for(int i=0;i   


この文章の内容はあなたに役に立つことを望みます