スポンサーリンク
※サイト運営にサーバーは必須です※
~このサイトもエックスサーバーを使用しています~
switch文とは
switch文は条件の分岐のために使用します。
選択肢によって、処理が分岐する場合によくswitch文が使用されます。
switch (評価する式)
{
case 値1:
文(処理A);
break;
case 値2:
文(処理B);
break;
default:
文(処理C);
break;
}
評価する式と値1が等しければ(評価する式==値1がtrueであれば)、処理Aが実行されます。
評価する式と値2が等しければ(評価する式==値2がtrueであれば)、処理Bが実行されます。
いずれの場合にも当てはまらない場合は、処理Cが実行されます(default~break)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Switch01 { class Program { static void Main(string[] args) { Console.WriteLine("あなたの血液型を教えてください(1~4の数字)"); Console.WriteLine(" 1:A型"); Console.WriteLine(" 2:B型"); Console.WriteLine(" 3:AB型"); Console.WriteLine(" 4:O型"); int bloodtype_number = int.Parse(Console.ReadLine()); switch (bloodtype_number) { case 1: Console.WriteLine("あなたの血液型はA型ですね"); break; case 2: Console.WriteLine("あなたの血液型はB型ですね"); break; case 3: Console.WriteLine("あなたの血液型はAB型ですね"); break; case 4: Console.WriteLine("あなたの血液型はO型ですね"); break; default: Console.WriteLine("1~4の数字を指定してください"); break; } } } } |
3と入力した場合の実行結果
あなたの血液型を教えてください(1~4の数字)
1:A型
2:B型
3:AB型
4:O型
3
あなたの血液型はAB型ですね
switch文で書ける処理は、if文を使って書くことが基本的に可能です。
しかし、上のようなコードをif文で書こうとするとelse ifが何度も続く、わかりづらいコードになります。
このように、値の違いによって、処理が何パターンにも分かれる時に有用です。
※注意すべきポイント
caseの最後は「:」(コロン)で区切ります。「;」(カンマ)ではありません。
caseを書いたら、必ずそれに対応したbreak文を書く必要があります。(C言語やC++言語では可能なフォールスルーがC#では許されません)
default~breakは必ず書かないといけないものではありません。
case値1:とcase値2:で処理が同じ場合には以下のように書くことも可能です。
switch (評価する式)
{
case 値1:
case 値2:
文(処理A);
break;
default:
文(処理B);
break;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Switch02 { class Program { static void Main(string[] args) { Console.WriteLine("以下の選択肢の内、正しいものを1つ選びなさい(1~4)"); Console.WriteLine("1:最も小さな完全数は28");//6が最小の完全数なので間違い Console.WriteLine("2:2は素数ではない");//2は素数なので間違い Console.WriteLine("3:8バイトは1ビットに等しい");//逆。1バイトが8ビットに等しいので、間違い Console.WriteLine("4:2の10乗は1000より大きい");//1024は1000より大きいので正しい int select_number = int.Parse(Console.ReadLine()); switch (select_number) { case 1: case 2: case 3: Console.WriteLine("不正解"); break; case 4: Console.WriteLine("正解"); break; } } } } |
2と入力した場合の実行結果
以下の選択肢の内、正しいものを1つ選びなさい(1~4)
1:最も小さな完全数は28
2:2は素数ではない
3:8バイトは1ビットに等しい
4:2の10乗は1000より大きい
2
不正解
関連記事
~プログラミングを勉強してみませんか?~
TechAcademy [テックアカデミー] は無料の体験講座が用意されているので、気軽に体験できます。
※私(サイト主)も無料体験講座を実際に受けてみました(→感想)