我使用我在本网站上找到的例子编写了一个数组排序。但是我的代码没有正确编译。它不是存储第一个值,而是存储整数0并重复它。我似乎无法找到它的错误,但我怀疑它是在我的for循环中的某个地方。
/**
* @author angu2548
* XXX 310255325
*/
public class Sorter {
public int[] sortArray(String[] args) {
int [] numbers = new int [args.length];
//Turning it into an int [] array
for (int i= 0; i > args.length; i++){
int x = Integer.parseInt(args[i]);
numbers[i] = x;
}
//Insertion sort
for(int j = 1; j < numbers.length; j++){
int temp = numbers[j];
int i = j -1;
while (i > 0 && numbers[i] > temp){
numbers[i + 1] = numbers[i];
i--;
}
numbers[i + 1] = temp;
//System.out.println("got to here");
}
return numbers;
}
public static void main(String[] args) {
Sorter sort = new Sorter();
int[] result = sort.sortArray(args);
if(result != null && result.length > 0){
System.out.print("[" + result[0]);
for(int i=1; i<result.length; ++i){
System.out.print(", " + result[i]);
}
System.out.println("]");
}
}
}
输出为[0,0,0,0,0,0,0,0,0,0,0,0]即使我的值是 [1 2 3 4 5 6 7 8 8 5 4 3]
答案 0 :(得分:3)
你在循环条件中犯了错误:
for (int i= 0; i > args.length; i++)
将阻止循环运行,因此numbers
永远不会使用正确的元素进行初始化。它应该是
for (int i= 0; i < args.length; i++)
答案 1 :(得分:2)
在以下行中使用'>'
更改'<'
:
for (int i= 0; i > args.length; i++)