Ahaha
Ahaha

Reputation: 426

how to read integers and store them in an array in java

Sorry if this is an obvious problem.

I'm trying to read integers from users and store them in an array.

The thing is that I want to use arraylist, because the size of the input is not for sure

If I know the size then I know a way to do that, which is

class Test1 
{
    public static void main(String[] args) 
    {
        Scanner reader = new Scanner(System.in);
        System.out.println("Please input your numbers");

        int num;       // integer will be stored in this variable

        ArrayList<Integer> List = new ArrayList<Integer>();

        // for example if I know the size of the input is 5, 
        // then I read one single number and put it into the arraylist.
        for (int i = 0; i <= 4; i++) 
        {
            num = reader.nextInt();
            List.add(num);
        }
        System.out.println(List);
    }
}

How to do this if I don't know the size? Except for reading one number in each loop, is there any better way to do that? Can I use BufferedReader instead of Scanner?

Thanks a lot for any help!

Upvotes: 1

Views: 9691

Answers (3)

Anuj Shah
Anuj Shah

Reputation: 71

You can use the hasNextInt() in a while loop to keep going until there are no more numbers to read.

  while (reader.hasNextInt()) {
      List.add(reader.nextInt());
  }

Upvotes: 0

Jean Logeart
Jean Logeart

Reputation: 53869

You cannot instanciate an array if you do not know its size.

Therefore your approach is the correct one: start with an ArrayList and when done adding to it, you can convert it to an array.

Upvotes: 0

Elliott Frisch
Elliott Frisch

Reputation: 201537

You could change this

for (int i = 0; i <= 4; i++) 
{
  num = reader.nextInt();
  List.add(num);
}

to use Scanner.hasNextInt() with something like

while (reader.hasNextInt()) 
{
  num = reader.nextInt();
  List.add(num);
}

Upvotes: 2

Related Questions