任何使用系统的替代方案。在用Gradle构建的java控制台应用程序中?
我有一个基本的控制台应用程序,我只是尝试在while循环中使用一个简单的扫描仪来捕获用户输入。我已经试着把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使其正确阻塞并实际等待输入
# 1 楼答案
事实证明,在每种情况下,如果您想获取输入,只要将一个新的Scanner()重新分配给Scanner变量,它就会正确地阻塞
尽管如此,他还是不会选择一个新角色
# 2 楼答案
您必须使用用户输入的
<Enter>
来做出选择,否则它将(立即)被您的String textToWrite = scanner.nextLine();
使用: