ScannerクラスのnextLine()による改行問題
ScannerクラスのnextLine()による改行問題
Scannerでは、nextInt()は、ユーザーが入力したものと、残したものとの改行を読み取ったり、認識したりしませんが、nextLine()は認識します。
この文章はオリジナルです。転載は作者を明記してください。ありがとうございます。
コードブロック
たとえば:
Scannerでは、nextInt()は、ユーザーが入力したものと、残したものとの改行を読み取ったり、認識したりしませんが、nextLine()は認識します。
この文章はオリジナルです。転載は作者を明記してください。ありがとうございます。
コードブロック
たとえば:
System.out.print(" :");
fruit.setPrice(input.nextInt());
System.out.print(" :");
fruit.setCount(input.nextInt());
System.out.print(" :");
fruit.setIntroduction(input.nextLine());
入力中にnextInt()は前回入力したnextInt()入力時に残した「」を読み取っていませんでしたが、nextLine()は前回入力したnextInt()が残した「」を読みましたので、ユーザーに入力していませんでした。 :apple
:10
:20
:
修正方法:nextLine()を読み込みますが、必要ではない」と濾過します。下のif操作のように:System.out.print(" :");
fruit.setPrice(input.nextInt());
System.out.print(" :");
fruit.setCount(input.nextInt());
/* if inpu.nexInt() "
",inpu.nexInt() , inpu.nextLine() , , input.nextLine() , , ( )*/
if (input.nextLine() != "
") {
}
System.out.print(" :");
fruit.setIntroduction(input.nextLine());
実行結果: :apple
:10
:50
:very well
もちろん、ユーザーも下記のようにフィルタリングしてもいいです。(強迫症で我慢できないので、上記のような方法を書きました。出力結果は自分で調整してください。)System.out.print(" :");
fruit.setPrice(input.nextInt());
System.out.print(" :");
fruit.setCount(input.nextInt());
input.nextLine();
-----------------
System.out.print(" :");
fruit.setIntroduction(input.nextLine());
注意:nextLine()という行は間違えないかもしれませんが、問題はこの行で発生します。使用中は注意してください。提案:使わない時はできるだけnextLine()を使わないでください。できるだけnext()を使います。