Question

This should be a very basic program but I'm new to Java. I want to be able to input multiple strings into the console using Scanner to detect them. So far I've been able to get the input part right, I wanted the program to run in such a way that the results are displayed when an empty space is entered as opposed to a string. Strangely enough I've only been able to get results when i hit return twice, however, when there are more than 4 inputs hitting return once works. My counter should count the number of "Courses" entered and display them in the results but it gives inaccurate readings.

import java.util.Scanner;

public class Saturn
{

    static Scanner userInput = new Scanner(System.in);

    public static void main(String[] args)
    {

        System.out.println("For each course in your schedule, enter its building");
        System.out.println("code [One code per line ending with an empty line]");

        String input;
        int counter = 0;

        while (!(userInput.nextLine()).isEmpty())
        {
            input = userInput.nextLine();
            counter++;
        }


        System.out.println("Your schedule consits of " + counter + " courses");
    }
}
Was it helpful?

Solution

You're calling Scanner#nextLine twice - once in the while loop expression and again in the body of the loop. You can just assign input from the while loop expression. In addition you can use Scanner#hasNextLine to defend against NoSuchElementException occurring:

while (userInput.hasNextLine() && 
        !(input = userInput.nextLine()).isEmpty()) {
   System.out.println("Course accepted: " + input);
   counter++;
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top