我正在尝试用Java创建一个插入排序算法,并且希望它能读取用户输入,他/她可以输入任意数量的数字(我们现在说它们都是整数,但是长期运行下去)能够同时执行整数和双精度/浮点数将是一个很好的选择),我希望该算法将它们全部排序。我的问题是,当我运行此代码以查看整数是否正确添加时,循环永远不会停止。
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。
让我知道是否遗漏了我需要包括的内容。
最佳答案
只要您停止向输入流中添加数字,您的代码就会停止。 nextInt()
正在寻找另一个整数值,如果找不到一个整数值,它将停止循环。
尝试一下-输入任何不能解释为int的字符序列,您的循环将停止。
例如,此序列将停止迭代:1 2 3 4 5 6 7 8 9 7/
。原因是7/
不能作为int读取,因此hasNextInt
的条件失败。