5

ここで完全に開示します。私は宿題をしている学生です。選択できる項目を含む 2 つのリストボックスがあります。それらの中で言われていることは、抽出する必要はありません。コードを書き出すと、コードの最後にある 3 つの変数で「割り当てられていない変数の使用」というエラーが表示される以外はすべて機能します。それらは、locFees、日、および登録です。変数に値がない原因となっている私が間違っていることを誰かに教えてもらえますか?

    private void btnCalc_Click(object sender, EventArgs e)
    {
        double registration, lodging, total, days, locFees;
        int workshopIndex, locationIndex;
        if (lbWorkshop.SelectedIndex != -1)
        {
            workshopIndex = lbWorkshop.SelectedIndex;
            switch (workshopIndex)
            {
                case 0:
                    days = 3;
                    registration = 1000;
                    break;
                case 1:
                    days = 3;
                    registration = 800;
                    break;
                case 2:
                    days = 3;
                    registration = 1500;
                    break;
                case 3:
                    days = 5;
                    registration = 1300;
                    break;
                case 4:
                    days = 1;
                    registration = 500;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a workshop.");
        }
        if (lbLocation.SelectedIndex != -1)
        {
            locationIndex = lbLocation.SelectedIndex;
            switch (locationIndex)
            {
                case 0:
                    locFees = 150;
                    break;
                case 1:
                    locFees = 225;
                    break;
                case 2:
                    locFees = 175;
                    break;
                case 3:
                    locFees = 300;
                    break;
                case 4:
                    locFees = 175;
                    break;
                case 5:
                    locFees = 150;
                    break;
            }
        }
        else
        {
            MessageBox.Show("You didn't select a city.");
        }
        lodging = locFees * days;
        total = registration + lodging;
    }
4

1 に答える 1

5

変数に値がない原因となっている、私が間違っていることを誰かに教えてもらえますか?

確かにworkshopIndex、0、1、2、3、または4ではない可能性を無視しています。

それが決して起こらないと思われる場合は、次を追加してください。

default:
    throw new InvalidOperationException("Invalid selected index " + workshopIndex);

または、デフォルトを使用したいだけの場合は、次のようにします。

default:
    days = 1;
    registration = 100;
    break;

これが、割り当てられていない状態になる最初の方法です。daysregistration

次に、スイッチブロックに入るのは。の場合のみであるという事実がありますlbWorkshop.SelectedIndex != -1。あなたのelseブロックはただです:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
 }

...そのelseブロックの後、続行します。あなたはおそらく欲しい:

 else
 {
     MessageBox.Show("You didn't select a workshop.");
     return;
 }

次に、switchステートメントとブロックlocFeesの両方に関して同じ問題が発生します。else

これから学ぶべきことの1つは、コンパイラーがこれらを見つけてくれたことに感謝することです。間違いなくバグが含まれているコードを実行できなくなります。これは常に良いことです。

于 2012-09-21T18:39:23.230 に答える