0
class sort {
    public static void main(String args[]) {
        int arr[], i, j, n, temp;
        n = args.length;
        for (i = 0; i <n; i++) {
            arr[i] = Integer.parseInt(args[i]);
        }
        for (i = 0; i < n-1; i++) {
            for (j = i + 1; j < n; j++) {
                if (arr[i] > arr[j]) {
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        for (i = 0; i <= n; i++) {
            System.out.println(arr[i]);
        }
    }
}

我在我的程序中发现了一些错误,请检查一下。arr[] 中的一些错误即将到来,但我无法找到实际问题

4

4 回答 4

4

在这段代码中

for (i = 0; i <= n; i++)

应该

for (i = 0; i < n; i++)

但如果不提供抛出的异常,则无法说。

你能发布实际错误是什么以及它发生在哪里吗?


我猜测

for(j=1+1; j<=n; j++)

应该

for(j= i +1; j < n; j++)

但你真的应该使用Arrays.sort(arr)Arrays.toString(arr)

于 2012-08-21T16:08:02.310 回答
4

您从未初始化arr. 数组是一个对象,需要先“更新”才能使用。

arr = new int[100]; //Sets size of array to hold 100 integers

或针对您的情况

arr = new int[args.length];

它需要知道要分配多少内存(要存储多少整数)。在尝试在以下行中访问它之前,请确保使用上面的代码初始化数组:

arr[i] = Integer.parseInt(args [i]);

这段代码应该给你一个编译器错误

变量 arr 可能尚未初始化

于 2012-08-21T16:08:14.633 回答
2

它更好地使用Collections.sort(List list);

List<Integer> list=new ArrayList();
 for (i = 0; i <= n; i++) {
            list.add(Integer.parseInt(args[i]));
        }
Collections.sort(list);
于 2012-08-21T16:08:22.317 回答
0

只需删除最后一个循环中的等号,您的程序就会运行良好!

于 2012-08-21T18:20:49.933 回答