ber*_*rkc 4 java java.util.scanner
我经常遇到这个问题.当我多次使用扫描仪时,它不会从用户那里获得输入.
Scanner scan = new Scanner(System.in);
System.out.println("1---");
int try1 = scan.nextInt();
System.out.println("2---");
int try2 = scan.nextInt();
System.out.println("3---");
String try3 = scan.nextLine();
System.out.println("4---");
String try4 = scan.nextLine();
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,结果:
1 ---
12
2 ---
321
3 ---
4 ---
AA
如您所见,它跳过了第3个输入.为什么会这样?我使用新的扫描仪解决了这个问题,有时我有5-6种不同的扫描仪,看起来很复杂.另一个问题是:存在错误"资源泄漏:扫描永远不会关闭".我真的很困惑.
问题是,通过使用scanner.nextInt()您只读取一个整数值,而不是整行,并且您不使用\n按下时附加到该行的换行符(\n )Enter.
然后,当您处理读取时,scanner.nextLine()使用换行符(\n)和前一行,并且不读取您想要读取的行.为了强制它读取它,你必须添加一个额外的input.nextLine()声明.
System.out.println("2---");
int try2 = scan.nextInt();
System.out.println("3---");
scan.nextLine(); //<-- fake statement, to move the cursor on the next line
String try3 = scan.nextLine();
Run Code Online (Sandbox Code Playgroud)
与问题无关,你必须Scanner在完成工作后关闭,否则编译器会发出警告:
scan.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12277 次 |
| 最近记录: |