• 締切済み

Switch構文について

maiko04の回答

  • maiko04
  • ベストアンサー率17% (345/1956)
回答No.2

あまり「最初にbreakが登場するまでブロック内の処理を実行する」ということが認知されていないというか、見たときに誤解されやすいので 「必ずbreakにてブロックを抜ける」としたほうが見やすいし、 誤解も避けられます。 「あれ?break抜けてる」と思われがちです。

noname#236857
質問者

お礼

認知されていない構文は、確かに誤解されやすいですね。 自分のプログラムコードが人に見られることも意識して 誤解されないようなプログラムにしたいと思います。 回答ありがとうございました。

関連するQ&A

  • switch文、break文と流れの制御について

    switch文、break文と流れの制御について JAVA超初心者です。よろしくお願いいたします。 只今、テキストを使って独学でJAVAを学習しておりまして、タイトルのような内容を学習しているところで、下記のようなプログラムが例題にありました。 ------------------------------------------ package chapter10; import lib.Input; public class Ex5{ public static void main(String[] args){ int n = Input.getInt(); switch(n){ case 1: System.out.println("1です"); case 2: System.out.println("2です"); case 3: System.out.println("3です"); default: System.out.println("それ以外です"); } } } ------------------------------------------ これを実行してみますと、breakの記載がないので、「1」を入力すると -------------------- 1です 2です 3です それ以外です -------------------- と全て表示されます。「2」を入力すると -------------------- 2です 3です それ以外です -------------------- と表示されます。 そこで質問です。 breakの記載がないので、ブロックから抜け出せないのはわかるのですが、入力した数字をcaseで判定し、caseの条件に当てはまった場合、何故それ以下のSystem.out.print()が全て実行されるのかわかりません。 私の解釈では、上記プログラムで「2」を入力した場合、JAVAは上から順に case 1 →『1ではないから実行しない』 (納得) case 2 →『2が入力されているから実行』 (納得) case 3 → ??? (入力されたのは2であり、3ではないから実行されないのではないか?) default → ??? (入力されたのは2であり、「それ以外」ではないから実行されないのではないか?) と思うのです。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • switch文の使い方について

    switch文で比較をさせたいのですが、その場合 switch()の括弧のなかはどうすれば良いのですか? int a,b; switch(){ case(a<b): break case(a>b): break } どなたか知っている方おしえてください。

  • 条件分岐 if(elseif) switchの実行速度

    条件分岐に if switchがありますが、 ifパターン ============================== if ( $a = 1) {   処理A } elseif ($a = 2) {   処理B } ============================== switchパターン ============================== switch($a){ case '1':   処理A break; case '2':   処理B break; } ============================== 実際はもっと複雑ですが、どちらのほうが実行速度が速いのでしょうか。

    • ベストアンサー
    • PHP
  • 変数の範囲によって場合わけしたいのですが、switchで可能でしょうか?

    変数の範囲によって場合わけしたいのですが、switchで可能でしょうか?あるいは、ifでないとだめでしょうか?やりたいのは、変数を$aとすると、 0<a<1 なら、処理1 1<a<2 なら、処理2 というのが10個くらいあります。ifだと長くなるのでできればswitchでやりたいのですが、可能でしょうか?条件をどうやって書けばいいのでしょうか?リファレンスを見ても乗っていませんでした・・ <?php switch ($a) { case (0<$a<1): 処理1; case (1<$a<2): 処理2; ・ ・ ・ } ?> という書き方はできるのでしょうか?あるいは不可なら、簡単な方法はあるでしょうか?

    • ベストアンサー
    • PHP
  • 構文解析 べき乗計算について

    今、構文解析のプログラムをC言語プログラムで作成しています。 switch文で演算子別に場合分けして(case '+': ~  というような形) しているのですが、べき乗を計算するために case '^': ~ という風にすると実行した時に^を入力しても ^を認識していないのかうまく計算できていません。 そこで試しに case '~': ~ と書き換え、実行時の入力も~でやってみたところ、 うまくべき乗の計算ができていました。 これはなぜなんでしょうか? また、どうすれば^と入力してべき乗の計算ができますか? 回答よろしくお願いします。

  • switch の範囲指定

    switch文で以下のように書いた時に処理はCを実行するのですが、 変数a が 0~9の時に こうしますよ と範囲がまだ狭い時はこのように書いても処理はできると思いますが 変数a の範囲が 0~99だった場合、いちいちcase を100回書いて(defaultを使えば処理は減るだろうけど) と数字を100回書かないといけないのはとても面倒だと思うのです。 そこで以下のようにifを使わずにswitchを使って範囲を指定する方法はありませんか? //ifを使った場合の範囲指定 if( ( 0 <= a ) && ( a < 25 ) ){ //略 } else if( ( 25 <= a ) && ( a < 50 ) ){ //略 } else if( ( 50 <= a ) && ( a < 75 ) ){ //略 } else if( ( 75 <= a ) && ( a < 100 ) ){ //略 } //ソース int a = 6; switch( a ){   case 0: case 1:     //処理A     break;   case 2: case 3: case 4:     //処理B     break;   case 5: case 6:     //処理C     break;   case 7: case 8: case 9:     //処理D     break; }

  • エクセルVBAでSelect...Caseの構文

    エクセルVBAで ■ Select...Caseの構文は、次(構文1)のようになっているとのことですが、 構文2のような、意味でネストして使う使い方は許されているのでしょうか。 (参考 QNo.1965604 の#7に,#8に関係したところをお聞きします。) (構文1) Select Case 変数  Case 値1    変数が値1の時の処理  Case 値2    変数が値2の時の処理  Case Else    他のCaseに合わない場合(その他)の処理 End Select (構文2) Select Case 変数a  Case 値1    変数aが値1の時の処理       Select Case 変数b            Case 値1            変数bが値1の時の処理            Case 値2            変数bが値2の時の処理       Case Else        変数bが、他のCaseに合わない場合(その他)の処理 End Select  Case 値2    変数aが値2の時の処理  Case Else    変数aが、他のCaseに合わない場合(その他)の処理 End Select

  • ■ 式の構文規則について ■

    下記URLの設問2にある式の構文規則についてです。 http://情報処理試験.jp/FE22a-pm/t02.html 式の構文規則にある「式」や「項」、「因子」、「名前」はどんな意味なのでしょうか? 構文規則の見方がよく理解できませんでした。 ご教授いただける方、よろしくお願いいたします。

  • phpのswitchについて教えて下さい brea

    phpのswitchについて教えて下さい breakがないとなぜその後のechoを全て表示してしまうんでしょうか? 条件には合致していないはずですよね? $weeks = "Tue"; switch($weeks){ case"tue": echo"火曜日"; case"wed": echo"水曜日"; この後同じ物を全て表示しますよね? 火曜日水曜日木曜日金曜日土曜日 実際はcaseに該当していないじゃないですか?

    • ベストアンサー
    • PHP
  • swith文について

    こんにちは。 switch文を用いて分岐を行っています。 以下のプログラムは、whileの無限ループ内にswitch文の分岐を行っています。while内にrecvfrom関数(ソケット通信用関数)を用いています。recv_Buf配列内をヌル文字まで走査し、文字列の長さによって分岐をしています。 while内のrecvfromによって、他端末から文字列を逐次受信しているのですが、この場合、switch文ではなくif文による分岐を行うべきなのでしょうか? また、breakを行うことで、whileの無限ループまで抜けることになるのでしょうか? switchの場合、breakを用いないと、実行したくないところまで実行してしまう可能性があるので、breakは必要だと思い以下のプログラムにしました。 よろしくお願いいたします。 [プログラム] while(1){   recvfrom(s2, recv_Buf, (int)sizeof(recv_Buf) - 1, 0, (SOCKADDR *)&from, &fromlen);   while(recv_Buf[len]!='\0')   len++;   switch(len){    case 3:     if(memcmp(recv_Buf,"END",3) == 0){      //処理     }     break;    case 5:     if(memcmp(recv_Buf,"START",5) == 0){      //処理     }     break;     case 12:     case 13:     case 14:     case 15:      if(memcmp(recv_Buf,"SEND_PACKET",11) == 0){       //処理      }      break;    } }