1

3 つの配列に割り当てられた 3 つの値 (名前、コース、平均) がありました。それらを組み合わせてリストボックスに入れなければなりませんでした。ここで、同じ行を選択し、それを 3 つの変数に分割できるようにする必要があります。

リストボックスの出力は次のようになります。

Lastname, firstname     SEC360    93.5

スペースを使用して分割しようとしましたが、姓と名が分割され、コンマを含む 1 つの結合変数である必要があります (それが配置されている配列と照合する必要があります)。設定値がないため、部分文字列もできません。何か案は?

編集:申し訳ありません。Im は経験の浅いプログラマー (控えめに言っても) で、このサイトは初めてです。

これは、配列をロードした場所です。

studentNamesAr[studentCount] = studentNameTxtBox.Text;
courseAr[studentCount] = courseNumTxtBox.Text;
gradesAr[studentCount, 0] = Convert.ToInt32(grade1TxtBox.Text);
gradesAr[studentCount, 1] = Convert.ToInt32(grade2TxtBox.Text);
gradesAr[studentCount, 2] = Convert.ToInt32(grade3TxtBox.Text);
gradesAr[studentCount, 3] = Convert.ToInt32(grade4TxtBox.Text);

これは、配列をリストボックスにロードする場所です。

for (int i = 0; i != studentCount; i++)
        {
            studentAvg = ((gradesAr[i, 0] + gradesAr[i, 1] + gradesAr[i, 2] + gradesAr[i, 3]) / 4);
            studentListBox.Items.Add(string.Format("{0, -20} {1, 20} {2, 20:F1}", studentNamesAr[i], courseAr[i], studentAvg));
        }

はい、これは Windows フォームです。

配列内のデータは失われません。プログラムを実行すると、おそらく 5 つのエントリがあるはずです。リストボックスから1つを選択して(削除するために)、3つの配列の値を見つけて削除し、残りの配列値を上にシフトするように、それらを分割する必要があります。

4

3 に答える 3

1

リストボックス内のアイテムの順序を保持する場合、リストボックスのSelectedIndexは、元の配列のインデックスと一致する必要があります。したがって、それができたら、配列を上にシフトすることができます(これはかなり面倒です)。

ちなみに、この問題に取り組むために使用するより良い構成がありますが、配列を使用するという規定は宿題の一部であると思います。:)

于 2013-01-17T15:59:39.720 に答える
0

「、」(「、」の後のスペースに注意してください)を別のもの(「;」など)に置き換えてから、パラメーターとしてスペースを指定して split メソッドを使用することをお勧めします。

string s = "Lastname, firstname SEC360 93.5";
string[] result = s.Replace(", ", ";").Split(' ');

その後、「;」を置き換えることで結果[0]を元に戻すことができます と "、 "

于 2013-01-17T15:40:26.197 に答える
0

.Tag プロパティで、他の区切り文字で区切られた値を保持できます。

于 2013-01-17T15:40:19.097 に答える