2

作成した配列には 20 個の要素がありますが、このコードでは、ユーザーが 20 個の項目すべてを同時に入力する必要はありません。20 未満の項目をいくつでも入力できます。ボタンをクリックすると、これまでに入力した値が表示されます。

配列を並べ替える方法と、20 個の要素すべてを表示する方法はわかりますが、入力した値のみを表示するようにコードを調整する方法がわかりません。以下のコードを使用すると、ユーザーが 20 個の要素のうち 5 つだけを入力すると、値だけでなく 0 も大量に取得されます。

 private void btnDisplayScore_Click(object sender, EventArgs e)
    {
        string scoresString = "";
        foreach (int s in scores)
            scoresString += s + "\n";
        MessageBox.Show(scoresString, "Sorted Scores");

        txtScore.Focus();
    }

これがばかげた質問である場合はお詫びします。私はプログラミングを始めたばかりです。

4

5 に答える 5

3

Sort(T[] array, int from, int length)初期インデックスとソートされるサブ配列の長さを示す 2 つのパラメーターをさらに取るのオーバーロードを使用できます。たとえば、ユーザーがK要素を入力した場合、次のように範囲をゼロから並べ替えることができますK

int[] myArray = new int[20];
int K = ... // This variable is set to the number of items the user enters
Array.Sort(myArray, 0, K);

より良い解決策は、配列に含まれる要素の数を知る前に、配列のサイズを変更しないことです。最適な解決策は、項目を動的に追加できるコンテナー ( List<T>.

于 2013-10-14T01:26:37.220 に答える
2

配列の代わりに、ある種のListデータ構造を使用します。List<T>

于 2013-10-14T01:26:57.173 に答える
1

リストを使用し、並べ替えてから表示する

        List<int> i = new List<int>();
        i.Add(20);
        i.Add(4);
        i.Add(2);
        i.Add(5000);
        i.Add(65);
        i.Sort();

        foreach (int ii in i)
        {
            Console.WriteLine(ii);
        }

        Console.ReadLine();
于 2013-10-14T01:58:30.633 に答える