0

わかりました、これは Java クラス用ですが、コードを書く人を探しているわけではありません。これをデバッグするのを手伝ってください。10 個の整数を入力し、配列に存在する可能性のあるゼロ (0) なしで、入力された入力を昇順に並べ替えて表示したいと考えています。

課題の例:

10 個の整数を入力してください - 一度に 1 つずつ...

整数 #1 を入力してください: 21

ソートされた数字: 21

整数 #2 を入力: 48

ソートされた数字: 21 48

整数 #3 を入力: 37

並べ替えられた数字: 21 37 48 など....

選択ソート、挿入、およびバブル ソートを試しましたが、配列は 5 つを超える数値を保持または表示しません。

ヘルプ。

これが私のメインです:

import java.util.*;

public class Main {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner (System.in);

    int j = 1;
    int[] list = new int[10];

    System.out.println("Enter 10 integers - one at a time...");

    for (int i = 0; i < list.length; i++){

        System.out.print("Enter integer #" + j + ": ");
        list[i] = input.nextInt();
        j++;

        //SortMethod.sort(list, list.length);
        SelectionSort.sort(list);
        //BubbleSort.sort(list);
        System.out.print("Sorted numbers: ");

        for(int p= 0; p<list.length; p++){  
            if (list[p] !=0)

                System.out.print(list[p] + " ");
        }
        System.out.print("\n");
    }   
    System.out.println("Done!");
}
}

これが私の選択ソートです:

public class SelectionSort {


public static void sort (int[] list){
    for(int i=0; i<list.length; i++)
     {
        for(int j=i+1; j<list.length; j++)
        {
            if(list[i] > list[j] )
            {
                int temp = list[j];
                list[j] = list[i];
                list[i] = temp;
            }
        }
     }
 }
}

前もって感謝します!

4

3 に答える 3

0

list[i] = input.nextInt();ソートされた値をすべての入力で置き換え ています。したがって、値は5常に. の代わりに使用し、新しい値を追加します。次のコードを試してください:0listList<Integer>int[]List<Integer>

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner input = new Scanner (System.in);
    int j = 1;
    List<Integer> list = new ArrayList<>();

    System.out.println("Enter 10 integers - one at a time...");

    for (int i = 0; i < 10; i++){

        System.out.print("Enter integer #" + j + ": ");
        list.add(input.nextInt());
        j++;

        //SortMethod.sort(list, list.length);
//        SelectionSort.sort(list);
        Collections.sort(list);
        //BubbleSort.sort(list);
        System.out.print("Sorted numbers: ");

        for(int p= 0; p<list.size(); p++){  
            if (list.get(p) !=0)
                System.out.print(list.get(p) + " ");
        }
        System.out.print("\n");
    }   
    System.out.println("Done!");
}
于 2013-10-24T06:24:57.937 に答える
0

コメントの下の行を変更しただけです(temp宣言とforループ)。この変更により、プログラムは負の数もサポートするようになります。以下のコメントを読んでください。

import java.util.*;

public class test {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner(System.in);

    int j = 1;
    int[] list = new int[11];

    System.out.println("Enter 10 integers - one at a time...");

    for (int i = 0; i < list.length - 1; i++) {

        System.out.print("Enter integer #" + j + ": ");

    // Add temporal variable to store input
        int temp = input.nextInt();
    // Check for empty place in list (as far as it seems you don't care about zeros)
        for (int p = 0; p < list.length; p++) {
                if (list[p] == 0) {
                    list[p] = temp;
                    break;
                }
        }

        j++;

        //SortMethod.sort(list, list.length);
        SelectionSort.sort(list);
        //BubbleSort.sort(list);
        System.out.print("Sorted numbers: ");

        for (int p = 1; p < list.length; p++) {
            if (list[p] != 0)

                System.out.print(list[p] + " ");
        }
        System.out.print("\n");
    }
    System.out.println("Done!");
}
}
于 2013-10-24T06:25:37.507 に答える