我尝试使用以下代码来读取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?
答案 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()
,那么您不必考虑解析数字。不是整数的标记会使您脱离循环。