この文をswitch文に直すとどのような形になるのでしょうか
if(Status[xx/block][yy/block+2]==false) { Status[xx/block][yy/block+1]=false; Status[xx/block][yy/block]=false; Status[xx/block][yy/block-1]=false; Status[xx/block][yy/block-2]=false; yy=0; }
回答の程よろしくお願いします。
また、詳しく解説も併せてお願いしたします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/12 14:35
2017/02/12 14:40
2017/02/16 16:19
回答3件
0
blockをintだと仮定してswitch文の分岐条件にすると以下のようにもできます
0で割るとエラーが出るので0の時はbreakする
1の値で割るとエラーが出るのでcaseに入れず
xx,yyの値である10より上の値で割るとやはりエラーが出るのでこれもcaseに入れず
defaultに含める
他にも配列の長さなどに応じて気を付けるべき点ができて来ると思いますが、
それは提示された部分以外のコードを知っている存在が気を付けるべきところではないかと思います
java
1class ST0 { 2 3 public static void main(String[] args) { 4 5 boolean[][] Status = { 6 { true, false, false, true, false, true, false, true, true, 7 true }, 8 { true, false, false, true, false, true, false, true, true, 9 true }, 10 { true, false, false, true, false, true, false, true, true, 11 true }, 12 { true, false, false, true, false, true, false, true, true, 13 true }, 14 { true, false, false, true, false, true, false, true, true, 15 true }, 16 { true, false, false, true, false, true, false, true, true, 17 true }, 18 { true, false, false, true, false, true, false, true, true, 19 true }, 20 { true, false, false, true, false, true, false, true, true, 21 true }, 22 { true, false, false, true, false, true, false, true, true, 23 true }, 24 { true, false, false, true, false, true, false, true, true, 25 true }, }; 26 int block = 10; 27 28 int xx = 10; 29 int yy = 10; 30 31 switch (block) { 32 33 case 0: 34 break; 35 36 37 case 2: 38 case 3: 39 case 4: 40 case 5: 41 case 6: 42 case 7: 43 case 8: 44 case 9: 45 case 10: 46 47 if (Status[xx / block][yy / block + 2] == false) { 48 Status[xx / block][yy / block + 1] = false; 49 Status[xx / block][yy / block] = false; 50 Status[xx / block][yy / block - 1] = false; 51 Status[xx / block][yy / block - 2] = false; 52 yy = 0; 53 } 54 break; 55 default: 56 break; 57 } 58 59 } 60 61}
投稿2017/02/12 16:10
編集2017/02/12 16:21退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
自分にはこの質問にあなたのどんな課題があるのかがわかりませんでした。
まずxx/block等々は問題の本質のように見えませんでした。以下のコードと置き換えてもなんら変わらない気がします。もし本質でないならあらかじめ不必要な複雑さは排除した方が問題のポイントにフォーカスしやすいと思います。そこは特に問題でないと仮定し以下はxx/blockをxi, yy/blockをyiに置き換えます。
java
1if (Status[xi][yi+2]==false) { 2 Status[xi][yi+1]=false; 3 Status[xi][yi]=false; 4 Status[xi][yi-1]=false; 5 Status[xi][yi-2]=false; 6 yy=0; 7}
さて上のような単体のif文と同一の論理となるようなswitch文にするとしたら以下のようなものになると思います。switch文にする意味も詳しい解説が必要にも思えません。なんとなく質問者さんが問いかけたかった解ではない気がしますが・・・
jav
1switch (Status[xi][iy+2]) { 2 case false: 3 Status[xi][yi+1] = false; 4 Status[xi][yi ] = false; 5 Status[xi][yi-1] = false; 6 Status[xi][yi-2] = false; 7 yy=0; 8 9 default: 10 break; 11} 12
問題のif文の外側にループなどのなんらかの制御構文があったり複数のif文が羅列されているなら問題となり得る気がします。それなしに単体でif文をswitchへ置き換えることには意味が感じられないというのが自分の意見です。
投稿2017/02/12 15:34
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。