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 に答える