将未知数量的数字添加到 arraylist
Adding unknown number of numbers to arraylist
我正在尝试在 Java 中制作一个插入排序算法,我希望它读取用户输入,并且 he/she 可以输入他们想要的任意数量的数字(我们会说他们现在都是整数,但是 long 运行 能同时做整数和 doubles/floats) 就好了,我希望算法能把它们全部排序。我的问题是,当我 运行 此代码查看整数是否正确添加时,我的循环永远不会停止。
public class InsertionSort {
public static void main(String[] args){
System.out.println("Enter the numbers to be sorted now: ");
ArrayList<Integer> unsortNums = new ArrayList<Integer>();
Scanner usrIn = new Scanner(System.in);
while(usrIn.hasNextInt()) {
unsortNums.add(usrIn.nextInt());
System.out.println(unsortNums); //TODO: Doesn't stop here
}
sortNums(unsortNums);
}
}
现在,我怀疑它与扫描器执行 .hasNextInt() 的方式有关,但我终究无法弄清楚为什么它不停止。这可能是 IDE 特定的东西吗?我正在使用 Intellij Idea。
如果我遗漏了任何需要包含的内容,请告诉我。
在 System.in
上使用扫描仪时,它只会阻塞并等待用户的下一次输入。一种常见的处理方式是告诉用户某个幻数,例如 -999
,将停止输入循环:
System.out.println("Enter the numbers to be sorted now (-999 to stop): ");
List<Integer> unsortNums = new ArrayList<Integer>();
Scanner usrIn = new Scanner(System.in);
int i = usrIn.nextInt();
while(i != -999) {
unsortNums.add(i);
i = usrIn.nextInt();
}
只要您停止向输入流添加数字,您的代码就会停止。 nextInt()
正在寻找另一个整数值,如果找不到,它将停止循环。
试一试 - 输入任何不能解释为 int 的字符序列,您的循环就会停止。
例如,此序列将停止迭代:1 2 3 4 5 6 7 8 9 7/
。原因是7/
不能读成int,所以hasNextInt
的条件不成立。
我正在尝试在 Java 中制作一个插入排序算法,我希望它读取用户输入,并且 he/she 可以输入他们想要的任意数量的数字(我们会说他们现在都是整数,但是 long 运行 能同时做整数和 doubles/floats) 就好了,我希望算法能把它们全部排序。我的问题是,当我 运行 此代码查看整数是否正确添加时,我的循环永远不会停止。
public class InsertionSort {
public static void main(String[] args){
System.out.println("Enter the numbers to be sorted now: ");
ArrayList<Integer> unsortNums = new ArrayList<Integer>();
Scanner usrIn = new Scanner(System.in);
while(usrIn.hasNextInt()) {
unsortNums.add(usrIn.nextInt());
System.out.println(unsortNums); //TODO: Doesn't stop here
}
sortNums(unsortNums);
}
}
现在,我怀疑它与扫描器执行 .hasNextInt() 的方式有关,但我终究无法弄清楚为什么它不停止。这可能是 IDE 特定的东西吗?我正在使用 Intellij Idea。
如果我遗漏了任何需要包含的内容,请告诉我。
在 System.in
上使用扫描仪时,它只会阻塞并等待用户的下一次输入。一种常见的处理方式是告诉用户某个幻数,例如 -999
,将停止输入循环:
System.out.println("Enter the numbers to be sorted now (-999 to stop): ");
List<Integer> unsortNums = new ArrayList<Integer>();
Scanner usrIn = new Scanner(System.in);
int i = usrIn.nextInt();
while(i != -999) {
unsortNums.add(i);
i = usrIn.nextInt();
}
只要您停止向输入流添加数字,您的代码就会停止。 nextInt()
正在寻找另一个整数值,如果找不到,它将停止循环。
试一试 - 输入任何不能解释为 int 的字符序列,您的循环就会停止。
例如,此序列将停止迭代:1 2 3 4 5 6 7 8 9 7/
。原因是7/
不能读成int,所以hasNextInt
的条件不成立。