【发布时间】:2016-11-14 00:27:04
【问题描述】:
我正在尝试对一些用空格分隔的用户输入的整数进行排序。
输入:4 2 1 5 9 -- 预期输出:1 2 4 5 9
用户在 i
class javasort {
public static void main(String[] args) {
int num, i, j, temp;
Scanner input = new Scanner(System.in);
// System.out.println("Enter the number of integers to sort:");
// num = input.nextInt();
num = 5; // <-- the user input should be dynamic
int array[] = new int[num];
System.out.println("Enter integers: ");
for (i = 0; i < num; i++)
array[i] = Integer.parseInt(input.next());
num = i; // make array as big as input ?
for (i = 0; i < (num - 1); i++) {
for (j = 0; j < num - i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
System.out.println("Sorted list of integers:");
for (i = 0; i < num; i++)
System.out.println(array[i]);
}}
【问题讨论】:
-
您缺少一对花括号。第一个循环的主体由一个且只有一个语句组成。建议:总是在
if语句和循环体中使用花括号。 -
如果这是预期的循环,那么它是可疑的。如果
num = i;,则i == num,所以i < num为假,循环将在一次迭代后结束。num = i;应该被删除。num是 5,您想从输入中读取 5 个数字。 -
如果您的意图是在每次“找到”一个新数字时更改数组的大小,那么仅仅更改
num是无法实现的。 -
@RudyVelthuis 数组大小应该是动态的。我输入了 5,因为否则我无法让它工作
-
查看我之前的评论。这不是改变数组大小的方法。什么时候停止读取输入?
标签: java sorting for-loop bubble-sort