JohnTJC
JohnTJC

Reputation: 9

I need help on the Java Scanner Code

So I need help on this code. This code is all in one so ignore the spaces but I need to write another scanner in the way bottom of the code and if I do add
String feeling = in.nextLine(); at the very end it does not work. I need a it so that I can write my feelings so that I can make jarvis answer but the string does not work and java ignores the string and goes right on to the next part. It starts from the middle.

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 + "?");
}

So if I add this code at the back it does not work. It ignores and says Oh. Mr is feeling.

String feeling = in.nextLine();
System.out.println("Oh. Mr." + userName + "is feeling" + feeling + ".")

Upvotes: 1

Views: 70

Answers (2)

Olivier Poulin
Olivier Poulin

Reputation: 1796

You can consume the \n character:

in.nextLine();
String feeling = in.nextLine();

So just putting in.nextLine() before the code you were going to add will easily fix your problem.

Upvotes: 0

Mena
Mena

Reputation: 48434

That is because your nextInt invocation does not actually parse a line feed.

Quoting the API, Scanner#nextInt:

Scans the next token of the input as an int.

(focus on the token part here)

Here's one (but not the only) way to fix it:

Integer passcodeFromUser = null;
try {
    passcodeFromUser= Integer.parseInt(in.nextLine());
}
catch (NumberFormatException nfe) {
    // TODO handle non-numeric password
}

... instead of int passcodeFromUser=in.nextInt();.

You can also loop the parsing of the Integer so that you print an error message when catching the NumberFormatException and don't break the loop until you have a valid numeric passcode.

Upvotes: 1

Related Questions