阵列分拣机。输出错误

时间:2011-08-25 13:23:34

标签: java arrays sorting

我使用我在本网站上找到的例子编写了一个数组排序。但是我的代码没有正确编译。它不是存储第一个值,而是存储整数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]

2 个答案:

答案 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++)