[英]Any alternatives to using system.in in a java console App built with Gradle?
我有一个基本的控制台应用程序,我只是试图在while循环中使用一个简单的Scanner来捕获用户输入。 我尝试将standardInput = System.in
放入build.gradle
,但是我的程序在等待输入时不会阻塞。
while (stillWriting) {
System.out.println(
"Press 1 to write something,\n" +
"Press 2 to erase something,\n" +
"Press 3 to exit."
);
//if you select 1, it goes into the case, but does not block
//then ends up here again.
int userSelection = scanner.nextInt();
switch (userSelection) {
case 1:
System.out.println("Enter text to be written: ");
//vvvvvv should block here but doesn't. vvvvvv
String textToWrite = scanner.nextLine();
paper = pencil.write(paper, textToWrite);
break;
case 2:
//some code
break;
case 3:
stillWriting = false;
break;
default:
System.out.println(userSelection + " is not valid.");
break;
}
}
我是否可以使用其他替代方法或jar使其正确阻止并实际等待输入?
最终在每种情况下都希望输入,如果您只是将新的Scanner()重新分配给扫描器变量,它将被正确阻止。
仍然不会选择换行符。
您必须使用用户输入的<Enter>
进行选择,否则(立即)您的String textToWrite = scanner.nextLine();
将使用它String textToWrite = scanner.nextLine();
:
[...]
int userSelection = scanner.nextInt();
scanner.nextLine(); // <-- consume the <enter>
switch (userSelection) {
[...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.