在java中使用int作为输入

在java中使用int作为输入,java,java.util.scanner,Java,Java.util.scanner,我尝试使用以下代码来读取int输入 import java.util.*; public Add{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); ArrayList<Integer> arr = new ArrayList<>(); while(scan.hasNextInt()){

我尝试使用以下代码来读取int输入

import java.util.*;
public Add{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        ArrayList<Integer> arr = new ArrayList<>();
        while(scan.hasNextInt()){
            arr.add(scan.nextInt());
        }
        System.out.println(arr);
    }
}

直到我按下
CTRL+c
,它才会停止。我还尝试了其他一些变体(例如,尝试将其读取为字符串数组,但也不起作用),但它们都是相同的。问题是我不想提前给出输入的大小。如何从控制台输入解析int?

您需要检查某些输入并中断循环,因为它将等待来自键盘的输入。您可以通过以下方式解决此问题:

int number;
while(scan.hasNextInt()){
    number = scan.nextInt();
    if (number == -1) {//if user types in -1, then you will come out of the loop.
        break;
    }
    arr.add(number);
}

由于您使用的是扫描仪,您可以尝试以下技巧,而不是使用
ArrayList
-

Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
while (sc.hasNextInt()) {
 int num = sc.nextInt();
 System.out.println("Your entered number is: " + num);
}  

如果使用
hasNextInt()
,则不必考虑数字的解析。一个非整数的令牌将使您脱离循环

它不应该停止,直到你ctrl+c,你已经建立了一个无限循环。您可以在特殊输入上结束它,如0或类似“done”的字符串(如果您愿意)。
Scanner sc = new Scanner(System.in);
System.out.println("Enter a number: ");
while (sc.hasNextInt()) {
 int num = sc.nextInt();
 System.out.println("Your entered number is: " + num);
}