31

次のコードがありますが、「12」と入力しても「あなたは老人です」と表示されます。9 - 15 は 9 UNTIL 15 の数字ではありませんか? 1 つのケースで複数の値を処理するには、他にどのようにすればよいですか?

  int age = Convert.ToInt32(txtBoxAge.Text);

  switch (age) 

  {
    case 1 - 8:
  MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
    break;
    case 9 - 15:
  MessageBox.Show("You are only " + age + " years old\n That's too young!");
    break;
    case 16-100:
  MessageBox.Show("You are " + age + " years old\n Perfect.");
    break;
    default:
  MessageBox.Show("You an old person.");
    break;
  }
4

10 に答える 10

41

1 - 8 = -7

9 - 15 = -6

16 - 100 = -84

あなたが持っている:

case -7:
    ...
    break;
case -6:
    ...
    break;
case -84:
    ...
    break;

次のいずれかを使用します。

case 1:
case 2: 
case 3:

など、または(おそらくより読みやすい)使用:

if(age >= 1 && age <= 8) {
     ...
} else if (age >= 9 && age <= 15) {
     ...
} else if (age >= 16 && age <= 100) {
     ...
} else {
     ...
}

于 2012-10-16T09:40:52.517 に答える
35

次のようなことをしなければなりません:

case 1:
case 2:
case 3:
//do stuff
break;
于 2012-10-16T09:40:38.993 に答える
8

case ステートメントで範囲を指定することはできません。次のようにすることができます。

case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
   MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;

case 9:
case 10:
case 11:
case 12:
case 13:
case 14:
case 15:
   MessageBox.Show("You are only " + age + " years old\n That's too young!");
   break;

...........等。

于 2012-10-16T09:49:30.257 に答える
5

代わりに ifelse を使用できますが、この場合の switch の使用方法を知りたい場合は、例を示します。

int age = Convert.ToInt32(txtBoxAge.Text);`
int flag;
if(age >= 1 && age <= 8) {
flag = 1;
} else if (age >= 9 && age <= 15) {
 flag = 2;
} else if (age >= 16 && age <= 100) {
 flag = 3;
} else {
 flag = 4;   
}
switch (flag) 

{
 case 1:
  MessageBox.Show("You are only " + age + " years old\n You must be kidding right.\nPlease fill in your *real* age.");
break;
case 2:
  MessageBox.Show("You are only " + age + " years old\n That's too young!");
break;
case 3:
  MessageBox.Show("You are " + age + " years old\n Perfect.");
break;
default:
  MessageBox.Show("You an old person.");
break;
}

それが役立つことを願っています! :)

于 2015-03-31T07:39:26.860 に答える
0

これを試すことができます。

スイッチ(武勇)
            {
                ケース (Valor1 & Valor2):

                    壊す;               
            }
于 2016-08-03T16:41:23.453 に答える
0

1 つの「ケース」で複数の値を評価する方法はありません。if ステートメントを使用するか (他の人が示唆しているように)、整数が属する範囲を評価し、その範囲を表す値 (「マイナー」、「アダルト」など) を返すメソッドを呼び出すことができます。この戻り値を switch ステートメントで評価します。もちろん、おそらくまだカスタム メソッドで if ステートメントを使用しているでしょう。

于 2016-12-16T21:27:40.233 に答える