質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2148閲覧

switch文をif文に書き換える

退会済みユーザー

退会済みユーザー

総合スコア0

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/23 03:03

編集2018/10/23 03:55
var GU = 1; var CHOKI = 2; var PA = 3; var USER_DO = prompt("グー、チョキ、パーを\nグー:"+GU+"\nチョキ:"+CHOKI+"\nパー:"+PA+"\nの中から選んでください"); var COMP_DO = Math.floor(Math.random() * 3 ) + 1; var msg; USER_DO = parseFloat(USER_DO); switch( COMP_DO ){ case GU : msg = "コンピュータはグーを選びました"; break; case CHOKI : msg = "コンピュータはチョキを選びました"; break; case PA : msg = "コンピュータはパーを選びました"; break;

このswitch分をif文に書き換えたいです。
どのようにif文の条件を指定したらいいか教えていただけますと幸いです。

追記

if( COMP_DO === USER_DO ){ alert(msg +"\nあいこです"); } else if( COMP_DO === GU && USER_DO === CHOKI ){ alert(msg +"\nコンピュータの勝ちです"); } else if( COMP_DO === CHOKI && USER_DO === PA ){ alert(msg +"\nコンピュータの勝ちです"); } else if( COMP_DO === PA && USER_DO === GU ){ alert(msg +"\nコンピュータの勝ちです"); } else if( COMP_DO === GU && USER_DO === PA ){ alert(msg +"\nあなたの勝ちです"); } else if( COMP_DO === CHOKI && USER_DO === GU ){ alert(msg +"\nあなたの勝ちです"); } else if( COMP_DO === PA && USER_DO === CHOKI ){ alert(msg +"\nあなたの勝ちです"); } */ if( COMP_DO === USER_DO ){ alert(msg +"\nあいこです"); } else if( COMP_DO === GU && USER_DO === CHOKI || COMP_DO === CHOKI && USER_DO === PA || COMP_DO === PA && USER_DO === GU ){ alert(msg +"\nコンピュータの勝ちです"); } else if( COMP_DO === GU && USER_DO === PA || COMP_DO === CHOKI && USER_DO === GU || COMP_DO === PA && USER_DO === CHOKI ){ alert(msg +"\nあなたの勝ちです"); }

条件はこんな感じです。

if文の中に入れる条件をどのようにしていしたらいいか分からないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice142

2018/10/23 03:19

コンピュータの手を表示するswitch文をif文に置き換える方法がわからないのですか?それとも追記された勝敗判定がわからないのですか?
退会済みユーザー

退会済みユーザー

2018/10/23 03:28

分かりずらくてすみません。switch文をif文に置き換える方法がわからないのですが、if文の条件をどのようにしていしたらいいのかもわからないです。
kei344

2018/10/23 03:49

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答2

0

switch は一般的に else if で置き換えられます。

投稿2018/10/23 03:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

JavaScript

1if (aaa === xxx) { 2 処理A; 3} else if (aaa === yyy) { 4 処理B; 5} else if (aaa === zzz) { 6 処理C; 7}

のような形で条件式と処理を追加していけばできますね。


switch文は以下の構造になっています。

JavaScript

1switch (比較元) { 2 case 比較対象A: 3 処理A; 4 break; 5 case 比較対象B: 6 処理B; 7 break; 8 case 比較対象C: 9 処理C; 10 break; 11 default: 12 処理D; 13}

これに対し、if文は以下のような書き方になります。

JavaScript

1if (比較元 === 比較対象A) { 2 処理A; 3} else if (比較元 === 比較対象B) { 4 処理B; 5} else if (比較元 === 比較対象C) { 6 処理C; 7} else { 8 処理D; 9}

質問者様のプログラムにあてはめてみれば分かるかと思います。
※質問者様は使用していませんが、defaultも一応説明のために追加しました。


条件式を結合するために&&||を使用していますが、
これらは優先順位があり、&&が優先されます。
例えば合格条件が「数学か理科が70点以上の人、かつ英語が90点以上の人」というものを
そのまま書いた場合は以下のようになりますが、

JavaScript

1if (math >= 70 || science >= 70 && english >= 90) {

これは&&が優先されるので以下のように括弧付けした書き方と同じになります。

JavaScript

1if (math >= 70 || (science >= 70 && english >= 90)) {

これは「数学が70点以上の人、もしくは理科が70点以上かつ英語が90点以上の人」が合格という
最初の目的と違う判定になってしまいます。

最初の合格条件は数学が80点取っていても英語が90点未満であれば不合格です。
が、この条件式では合格となってしまいます。

これを正しくするには以下のように括弧付けするようにします。

JavaScript

1if ((math >= 70 || science >= 70) && english >= 90) {

というわけで、書いたコードの条件文を見直してみましょう。

投稿2018/10/23 03:06

編集2018/10/23 04:00
dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2018/10/23 03:12

case PA : も else if なのでは。
dice142

2018/10/23 03:17

defaultあると思いこんでました。ご指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/10/23 03:46

一番間違っちゃいけない比較演算子間違えてますよ。
dice142

2018/10/23 03:52

あれ?どこか間違えてます?
dice142

2018/10/23 04:00

厳密等価になってませんでしたね。失礼しました。
退会済みユーザー

退会済みユーザー

2018/10/23 04:38

ご回答いただいた内容を参考に書いてみたのですが、エラーが出てしまってうまく行きません。 ()の条件はどうしていしたらエラーが出なくなりますか? 理解力が乏しく申し訳ないのですが、ご教授頂けると幸いです。 if (COMP_DO === GU) {  alert("コンピュータはグーを選びました";) } else if (COMP_DO === CHOKI) { alert("コンピュータはチョキを選びました"); } else if (COMP_DO === PA) { alert("コンピュータはパーを選びました"); } else { alert("エラー"); }
dice142

2018/10/23 04:41

エラー文を読んでみましたか?
退会済みユーザー

退会済みユーザー

2018/10/23 04:58

すみません、解決しました。 いろいろとご丁寧にありがとうございました。
dice142

2018/10/23 04:59

解決できたようで何よりです。 おめでとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問