我有扫描仪要求一些偏好。它在0到3之间创建int
变量choice
。然后我执行以下操作:
String location;
switch(choice){
case 0:
System.out.println("Please type the zip codes you would like to search in a comma separated list");
location = input.nextLine();
break;
case 1:
System.out.println("Please type the street names you would like to search in a comma separated list");
location = input.nextLine().toUpperCase();
break;
case 2:
System.out.println("Please type the boroughs you would like to search in a comma separated list");
location = input.nextLine().toUpperCase();
break;
default:
location = "none";
break;
}
String locations[] = location.split("\\s*,\\s*");
现在对我来说这看起来很好,但是当选项设置为0,1或2时,它将打印正确的行,但跳过用户必须输入内容的部分(看起来像location =的行)。 ..)
这意味着它不会让用户有机会输入任何内容,因此locations
成为空白列表。 为什么会发生这种情况?我该如何解决?
答案 0 :(得分:3)
您可能在最后一次输入后读取换行符,而不是真正的下一行。尝试:
int choice = input.nextInt();
input.nextLine(); // <--- Eat it here!
String location;
switch(choice){
case 0:
Syst...
nextInt()
调用,提示您选择,不会结束该行。因此,nextLine()
之后第一次调用nextInt()
将返回一个空字符串。要解决这个问题,请在整数后面吃掉空行,然后再继续。
答案 1 :(得分:0)
我遇到了与您相同的问题。试试:
case 'f' :
System.out.println("Enter a word or phrase to be found:");
scnr.nextLine();
String phrase = scnr.nextLine(); //
答案 2 :(得分:0)
在开关之前的读取之后放置nextLine。
System.out.print("Digite um número ente 1 e 9: ");
int opc = read.nextInt();
read.nextLine();
switch(opc) {
然后使用nextLine()读取您的值
case 6:
String[] procurados = read.nextLine().split(" ");