【发布时间】:2015-01-28 07:13:32
【问题描述】:
我正在尝试在 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。
如果我遗漏了任何需要包含的内容,请告诉我。
【问题讨论】:
-
这个问题与IDE本身无关,所以我删除了那个标签。
-
您提供的哪些输入有问题?阅读扫描仪文档——
nextInt()可能会阻塞等待输入。您希望如何跳出循环? -
你测试这个的输入是什么?
-
Scanner.hasNextInt() 等到用户点击回车并检查输入是否为整数类型。当用户输入其他内容时,例如“完成”,Scanner.hasNextInt() 返回 false 并退出循环。所以给用户一个提示,在完成他的整数列表后该做什么。
-
诚,没关系,只是为了安全起见添加了它。 Barq,我刚试过“1 2 3 4”,显然没有引号。
标签: java insertion-sort