我需要有关Java扫描程序代码的帮助

时间:2015-07-02 14:29:19

标签: java

所以我需要有关此代码的帮助。这段代码都在一个,所以忽略空格,但我需要在代码底部的方式编写另一个扫描仪,如果我添加了 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 + ".")

2 个答案:

答案 0 :(得分:1)

这是因为您的nextInt调用实际上并未解析换行符。

引用APIScanner#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()就可以轻松解决问题。