Reputation: 426
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
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
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
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