0

So i have the following chuckj of code and what i want it do is for the user to enter 5 numbers in the netbeans console.The way i want to do it is he either can enter some by being separting the numbers with a space or line by line for exmaple like the following

enter image description here

But what i want is to "Enter a string of numbers" to be only visiable when it is needed to, for example when he needs to enter the next number. Is it possible to do this?

The following is done by the following code

Scanner reader = new Scanner(System.in);
        int number;
        List<Integer> numbers = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            System.out.println("Enter a string of numbers");
            number = reader.nextInt();
            numbers.add(number);
        }

        System.out.println("size" + numbers.size());
        for(int takenNumber : numbers){
            System.out.println(takenNumber);
        }
Steve
  • 1,153
  • 5
  • 13
  • 27

2 Answers2

2

You could do something like this:

Scanner reader = new Scanner(System.in);
List<Integer> numbers = new ArrayList<>();

int numbersEntered = 0; // Stores how many numbers the user has entered so far
while (numbersEntered < 5) { // Keep asking if they have not entered 5 numbers yet
    System.out.println("Enter a string of numbers");
    String[] input = reader.nextLine().split(" "); // Split the input by spaces into an array
    numbersEntered += input.length; // Add the number of numbers they entered to the variable
    for (int i = 0; i < input.length; i++) {
        if (numbers.size() < 5) { // Only add the numbers if the list is not full
             numbers.add(Integer.parseInt(input[i])); // Add each number they entered to the numbers list
        }
    }
}
Zach
  • 4,304
  • 15
  • 20
0

You can use the hasNext() function of Scanner to keep reading while there is more input without doing another prompt. Try:

Scanner reader = new Scanner(System.in);
int number;
ArrayList<Integer> numbers = new ArrayList<Integer>();
int i = 0;
while((i < 5))
{
  System.out.println("Enter a string of numbers:");
  if(reader.hasNextLine())
  {
    String[] numbersRead = reader.nextLine().split("\\s");
    System.out.print("Read:");
    for(int n = 0; n < numbersRead.length; n++)
    {
      numbers.add(Integer.parseInt(numbersRead[n]));
      i++;
    }
    System.out.println();
  }
}
Dtor
  • 570
  • 2
  • 8
  • Doesn't work keeps asking for the number never ends. I have tried this already and tried again with your code. – Steve Jan 02 '15 at 18:34