0

そこで、入力された従業員の勤続年数に基づいて、従業員の基本給を決定します。

スイッチ構造を使用してこれを行う必要があり、次のように範囲が与えられます。

勤続年数_ _ _基本給

 0 – 5                  $ 9,500 
 6 – 11                 $12,700 
12 – 17                 $15,300 
18 – 29                 $22,600 
 >= 30                  $26,800

では、すべての数値の大文字と小文字を区別したくない場合は、どのようにケースの範囲を設定すればよいでしょうか?

これはそれほど面倒なことではありませんが、売り上げに基づいて手数料を計算する必要があり、その範囲は $0 ~ 3,999.99 と $16,000 ~ 23,999.99 です。

4

3 に答える 3

2

ステートメントを使用せざるを得ない場合はswitch、複数のケースを連鎖させることができるという事実を考慮してください。

switch (years) {
  case 0:
  case 1:
  case 2:
  ..
    return 9500;
  case 6:
  case 7:
  ..
}

しかし、ifステートメントは問題により適しているようです:

if (years >= 0 && years <= 5)
  ..
else if (years >= 6 && years <= 11)
  ..
于 2013-10-07T20:52:42.760 に答える
1

したがって、パート 1 では、複数のケースが 1 つのコード パスに従うスイッチを宣言するだけです。このような:

int baseSalary
switch (yearsWorked)
{
  case 0:
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    baseSalary = 9500;
    break;

  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
  case 11:
    baseSalary = 12700;
    break;

  ... etc ...
}

2 番目の部分では、数千の範囲内のすべての数値を切り替えるのは非常に現実的ではありませんが、少し賢い除算を行えば、同様に簡単に行うことができます。2000 を 1000 で割ると 2 になり、2500 を 1000 で割ると 2 になります (余りは 500)。これを使用して、switch ステートメントを生成できます。

int sales = 2100;
int salesRange = sales / 1000; // (salesRange = 2)

int commission
switch (salesRange)
{
  case 0:  // $0-999 sales
  case 1:  // $1000-1999 sales
  case 2:  // $2000-2999 sales
  case 3:  // $3000-3999 sales
    commission = <some number here>;
    break;

  ... etc ...
}

そうは言っても、これは「スイッチを使用する必要がある」ことが学校の課題などの一部であることを前提としています。他の人が言及しif (sales >= 0 && sales <= 3999)たように、この種のスイッチを使用するよりも、範囲を指定した if ステートメント (例: ) を使用する方がよいでしょう。

于 2013-10-07T21:01:40.723 に答える