所以我需要这段代码的帮助。这个代码是一体的,所以忽略空格,但我需要在代码底部写另一个扫描仪,如果我添加String feeling = in.nextLine();
在最后不起作用。我需要一个it,这样我就可以写下我的感受,这样我就能让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 + ".")
这是因为nextInt
调用实际上并不解析换行符。
引用API,Scanner#nextInt
:
将输入的下一个标记扫描为内部
(此处关注代币部分(
这里有一种(但不是唯一的(解决方法:
Integer passcodeFromUser = null;
try {
passcodeFromUser= Integer.parseInt(in.nextLine());
}
catch (NumberFormatException nfe) {
// TODO handle non-numeric password
}
而不是CCD_ 5。
您还可以循环Integer
的解析,以便在捕获NumberFormatException
时打印错误消息,并且在获得有效的数字密码之前不要中断循环。
您可以使用字符:
in.nextLine();
String feeling = in.nextLine();
因此,只要在要添加的代码之前放入.nextLine((,就可以很容易地解决问题。