所以我需要有关此代码的帮助。这段代码都在一个,所以忽略空格,但我需要在代码底部的方式编写另一个扫描仪,如果我添加了
String feeling = in.nextLine();
最后它不起作用。我需要一个它,这样我就可以写出我的感受,这样我就可以做出jarvis的答案,但字符串不起作用,java会忽略字符串并直接进入下一部分。它从中间开始。
Scanner in = new Scanner(System.in);
System.out.println("Type User Name:");
String userName = in.nextLine();
System.out.println("PASSWORD:");
int passcodeFromUser=in.nextInt();
int passcode = 2015;
if (passcodeFromUser == passcode) {
System.out.println("Welcome Mr." + userName + "!");
Random random = new Random(userName.hashCode());
System.out.println("Mr." + userName + ", You are now recognized and you are now able to command me.");
System.out.println("I was created by John Choi");
System.out.println("JARVIS stands for Just A Rather Very Intelligent System");
System.out.println("How are you today Mr." + userName + "?");
}
因此,如果我在后面添加此代码,则无效。它忽略并说Oh. Mr is feeling.
String feeling = in.nextLine();
System.out.println("Oh. Mr." + userName + "is feeling" + feeling + ".")
答案 0 :(得分:1)
这是因为您的nextInt
调用实际上并未解析换行符。
引用API,Scanner#nextInt
:
将输入的下一个标记扫描为int。
(专注于此处的令牌部分)
这是解决问题的方法之一(但不是唯一的方法):
Integer passcodeFromUser = null;
try {
passcodeFromUser= Integer.parseInt(in.nextLine());
}
catch (NumberFormatException nfe) {
// TODO handle non-numeric password
}
...而不是int passcodeFromUser=in.nextInt();
。
您还可以循环解析Integer
,以便在捕获NumberFormatException
时打印错误消息,并且不要打破循环,直到您拥有有效的数字密码。
答案 1 :(得分:0)
您可以使用\ n字符:
in.nextLine();
String feeling = in.nextLine();
所以只需在你要添加的代码之前放入.nextLine()就可以轻松解决问题。