ScannerクラスのnextLine()による改行問題

2246 ワード

Scannerクラスの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
       :1020
修正方法: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
       :1050
       :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()を使います。