JavaにおけるnextとnextLineの使い方の比較を浅く分析する
1271 ワード
JAvaのnextとnextLineの使い方の違い:
next()は必ず有効文字を読み取ってから入力を終了することができ、有効文字を入力する前に遭遇したスペースキー、Tabキー、Enterキーなどの終了子next()メソッドは自動的に削除され、有効文字を入力した後にのみnext()メソッドはその後に入力したスペースキー、Tabキー、Enterキーなどをセパレータまたは終了子と見なします.
簡単に言えば、next()は、このスキャナからの次の完全なタグを検索して返します.
完全タグの前後は区切りモードに一致する入力情報であるためnextメソッドではスペース付き文字列は得られない.
一方、nextLine()メソッドの終端子はEnterキーにすぎません.すなわち、nextLine()メソッドはEnterキーの前のすべての文字を返し、スペース付き文字列を得ることができます.
実行結果:
nextLine()は、next()によって削除されたEnterを自動的に読み出して終了符としているので、s 2にキーボードから値を入力することはできません.
検証の結果、double nextDouble()、float nextFloat()、int nextInt()などの他のnextの方法がnextLine()と連用されている場合にこの問題があることを発見しました.解決策は、各next()、nextDouble()、nextFloat()、nextInt()などの文の後に
next()メソッドとnextLine()を混用する場合、各next()メソッドの後に
この文章の内容はあなたに役に立つことを望みます
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
この文章の内容はあなたに役に立つことを望みます