将int作为输入在java中

时间:2015-02-01 15:54:31

标签: 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()){
            arr.add(scan.nextInt());
        }
        System.out.println(arr);
    }
}

当我用任何输入运行程序时说 -

1 2 4

在我按CTRL+c之前,它不会停止。我也尝试了一些其他变体(例如尝试将其作为String数组读取,但也没有用)但它们是相同的。问题是我不想提前给出输入的大小。如何从控制台输入中解析int?

2 个答案:

答案 0 :(得分:0)

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

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);
}

答案 1 :(得分:0)

由于您使用的是扫描仪,因此您可以尝试以下技巧,而不是使用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(),那么您不必考虑解析数字。不是整数的标记会使您脱离循环。