HasNextInt() 无限循环
HasNextInt() Infinite loop
//input: multiple integers with spaces inbetween
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())
{
//add number to list
}
sc.hasNextInt()
正在等待 integer
。它只会在你输入 non-integer
字符时爆发。
不久前我在这里看到了一个解决方案,但我找不到了。
解决方案(如果你问我是最好的)是使用两个扫描仪。我似乎无法弄清楚它是如何使用两个扫描仪来解决这个问题的。
sc.NextLine()
也许吧?
用户可以输入多个整数,数量未知。例如:3 4 5 1。它们之间有一个 space。我想做的就是读取整数并将其放入列表中,同时使用两个扫描仪。
试试这个:
while (sc.hasNext()) {
if (sc.hasNextInt()) {
// System.out.println("(int) " + sc.nextInt());
// or add it to a list
}
else {
// System.out.println(sc.next());
// or do something
}
}
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())
{
System.out.println("Hi");
System.out.println("Do you want to exit ?");
Scanner sc2 = new Scanner(System.in);
if(sc2.next().equalsIgnoreCase("Yes")){
break;
}
}
根据您的评论
A user can input multiple integers the amount is unknown. Ex: 3 4 5 1. There is a space inbetween them. All i want to do is read the integers and put it in a list while using two scanners.
您可能正在寻找:
- 将从用户读取行的扫描器(如果需要可以等待下一行)
- 另一个扫描器,它将处理拆分行中的每个数字。
因此您的代码可以类似于:
List<Integer> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.print("give me some numbers: ");
String numbersInLine = sc.nextLine();//I assume that line is in form: 1 23 45
Scanner scLine = new Scanner(numbersInLine);//separate scanner for handling line
while(scLine.hasNextInt()){
list.add(scLine.nextInt());
}
System.out.println(list);
//input: multiple integers with spaces inbetween
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())
{
//add number to list
}
sc.hasNextInt()
正在等待 integer
。它只会在你输入 non-integer
字符时爆发。
不久前我在这里看到了一个解决方案,但我找不到了。
解决方案(如果你问我是最好的)是使用两个扫描仪。我似乎无法弄清楚它是如何使用两个扫描仪来解决这个问题的。
sc.NextLine()
也许吧?
用户可以输入多个整数,数量未知。例如:3 4 5 1。它们之间有一个 space。我想做的就是读取整数并将其放入列表中,同时使用两个扫描仪。
试试这个:
while (sc.hasNext()) {
if (sc.hasNextInt()) {
// System.out.println("(int) " + sc.nextInt());
// or add it to a list
}
else {
// System.out.println(sc.next());
// or do something
}
}
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt())
{
System.out.println("Hi");
System.out.println("Do you want to exit ?");
Scanner sc2 = new Scanner(System.in);
if(sc2.next().equalsIgnoreCase("Yes")){
break;
}
}
根据您的评论
A user can input multiple integers the amount is unknown. Ex: 3 4 5 1. There is a space inbetween them. All i want to do is read the integers and put it in a list while using two scanners.
您可能正在寻找:
- 将从用户读取行的扫描器(如果需要可以等待下一行)
- 另一个扫描器,它将处理拆分行中的每个数字。
因此您的代码可以类似于:
List<Integer> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.print("give me some numbers: ");
String numbersInLine = sc.nextLine();//I assume that line is in form: 1 23 45
Scanner scLine = new Scanner(numbersInLine);//separate scanner for handling line
while(scLine.hasNextInt()){
list.add(scLine.nextInt());
}
System.out.println(list);