-1

ユーザーから 100 個の整数を受け取る Java アプリを作成します。入力は 1 ~ 200 の範囲である必要があります。プログラムは、次のカテゴリの整数の数を表示します。

1-10
11-20
21-30
31-40
…
…
191-200

プログラムには、これらのタスクを実行する void メソッドが必要です。int[]以下に示すように、入力値を次の形式で表す 1 つのパラメーターがあります。

void displayStatistics( int[] input)

みんな助けてください。次に何をすればいいのかわかりません。

コードは次のようになります。

public static ArrayList<Integer> array = new ArrayList<Integer>();
public static Scanner reader = new Scanner(System.in);

public static void main (String[] args)
{
    System.out.println("Enter number and 0 for stop.");
    int enter = reader.nextInt();
    while ( enter != 0)
    {
        if ((enter >= 1) && (enter <= 200))
        {
            array.add(enter);
        }

        else
        {
            System.out.println("Number range is 1-200");
        }

         enter= reader.nextInt();    
    }

    void displayStatistics(int[] input)
    {
    for (int i = 1; i <= 20; i++)
    {
        int Nombor1 = ((i-1) * 10) + 1;
        int Nombor2 = (i * 10);
        int count = 0;
        System.out.print((Number1 + "-" + Number2 +"   ===>"));
        for (int number : array)

        {
            if ((number >= Number1) && (number <= Number2))
            {
                count++;
            }
        }

        for (int x = 0; x < count; x++)

            System.out.print(x+1);

            System.out.println();
    }
    }   
} 
4

3 に答える 3

1

私はあなたのプログラムがコンパイルされ、それが何をするかを見るためにそれをテストすることを確実にします。IDEを使用している場合は、入力時にコードがコンパイルされているかどうかが表示され、コードのフォーマットに役立ちます。

期待どおりに機能しない場合は、デバッガーを使用してコードをステップ実行し、なぜ機能するのかを理解できます。


あなたの興味のために、そしてあなたはうまくいくように見える方法を持っています、これが私がdisplayStatisticsを書く方法です

static void displayStatistics(int[] ints) {
    int[] count = new int[20];
    for (int i : ints) count[(i - 1) / 10]++;
    for (int i = 0; i < count.length; i++)
        System.out.printf("%d to %d : %d%n", i * 10 + 1, i * 10 + 10, count[i]);
}
于 2012-11-07T12:27:33.310 に答える
0

メイン メソッドを閉じるのを忘れました。

次に、displaystatistics メソッドを呼び出す必要があります。そのメソッドを静的メソッドに変更するか、クラスの新しいインスタンスを作成できます。

いずれにせよ、「配列」を静的であると宣言したので、変数「input[]」を渡す必要はありません。

後は、結果を表示するだけです。

あなたのプログラムを少し修正したので、これでうまくいくはずですが、これは最も効率的な方法ではありません。

public static ArrayList<Integer> array = new ArrayList<Integer>();
public static Scanner reader = new Scanner(System.in);

public static void main(String[] args) {

    System.out.println("Masukkan nombor antara 1-200 dan 0 untuk berhenti.");
    int masuk = reader.nextInt();
    while ( masuk != 0 ) {
        if ( (masuk >= 1) && (masuk <= 200) ) {
            array.add(masuk);

        }

        else {
            System.out.println("Nombor mesti antara 1-200");
        }
        masuk = reader.nextInt();
    }
    displayStatistics();
}

static void displayStatistics() {
    for (int i = 1; i <= 20; i++) {
        int Nombor1 = ((i - 1) * 10) + 1;
        int Nombor2 = (i * 10);
        int count = 0;
        System.out.print((Nombor1 + "-" + Nombor2 + "   ===>"));
        for (int nombor : array) {
            if ( (nombor >= Nombor1) && (nombor <= Nombor2) ) {
                count++;
            }
        }

        /*for (int x = 0; x < count; x++) {
            System.out.print(x + 1);
        }*/
        System.out.print(count);
        count = 0;

        System.out.println();

    }

}
于 2012-11-07T12:42:29.940 に答える
0

わかりました、あなたが示すコードに関するいくつかのコメント。

  • メソッドを別のメソッド内に置くことはできません。displayStatistics() を main() から移動します。
  • 最初からコードを正しくインデントするように注意してください。正しいコードを取得するのに役立ちます。
  • nombor1Java の規則に従いますNombor1
  • println範囲のスキャン後、countこの値をループしても意味がありません。
于 2012-11-07T12:31:46.397 に答える