- ベストアンサー
elseを使わないで複合条件をする方法
- JavaScriptのコードを改造して、elseを使わないで複合条件をする方法を教えてください。
- 改造したコードでは、BMI指数を計算し、BMI指数に基づいてメッセージを表示しています。
- 改造したコードでは、if文の条件式を連結させることで、複合条件を実現しています。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
<Script language="JavaScript"> var Range = new Array(20,24,26.5); var Msgs = new Array("痩せ型","普通","太り気味"); var tall,weight,BMI; tall = 176; weight = 56; BMI = weight / tall / tall * 10000; document.write("貴方のBMI指数は"+BMI+"です。<br>"); var msg = "貴方は肥満と診断されました。<br>"; for(i=0;i<Range.length;i++){ if(BMI < Range[i]){ msg = "貴方は" + Msgs[i] + "です。<br>"; break; } } document.write(msg); document.write("あなたの理想体重は"+22*tall*tall/10000+"です。<br>") </script>
その他の回答 (5)
- ctrlzr
- ベストアンサー率29% (18/62)
↓が間違っていたので直しました。未実施は変わりません。 <Script language="JavaScript"> var tall,weight,BMI; tall = 176; weight = 56; BMI = weight / tall / tall * 10000; document.write("貴方のBMI指数は"+BMI+"です。<br>"); document.write(fncbodytype(BMI)); document.write("あなたの理想体重は"+22*tall*tall/10000+"です。<br>") function fncbodytype(bmi){ if(bmi < 20) retuen "貴方は痩せ型です。<br>"; if(bmi < 24) return "貴方は普通です。<br>"; if(bmi < 26.5) return "貴方は太り気味です。<br>"; if(bmi >= 26.5) return "貴方は肥満と診断されました。<br>"; } </script>
お礼
またまたすいません; 何かページエラーがでました; でもありがとうございます!
- ctrlzr
- ベストアンサー率29% (18/62)
コードかいちゃいました。 ...が未実施です。 <Script language="JavaScript"> var tall,weight,BMI; tall = 176; weight = 56; BMI = weight / tall / tall * 10000; document.write("貴方のBMI指数は"+BMI+"です。<br>"); document.write(fncbodytype(BMI)); document.write("あなたの理想体重は"+22*tall*tall/10000+"です。<br>") function fncbodytype(bmi){ if(bmi < 20) retuen "貴方は痩せ型です。<br>"; if(BMI < 24) return "貴方は普通です。<br>"; if(BMI < 26.5) return "貴方は太り気味です。<br>"; if(BMI >= 26.5) return "貴方は肥満と診断されました。<br>"; } </script>
お礼
やってみたところうまく起動されませんでした; でもありがとうございます!
- X-trail_00
- ベストアンサー率30% (438/1430)
<Script language="JavaScript"> var tall,weight,BMI; tall = 176; weight = 56; BMI = weight / tall / tall * 10000; document.write("貴方のBMI指数は"+BMI+"です。<br>"); var a; a=BMI< 20?1:BMI< 24?2:BMI< 26.5?3:4; switch(a){ case 1: alert("貴方は痩せ型です。<br>");break; case 2: alert("貴方は普通です。<br>");break; case 3: alert("貴方は太り気味です。<br>");break; case 4: alert("貴方は肥満と診断されました。<br>");break; } document.write("あなたの理想体重は"+22*tall*tall/10000+"です。<br>") </script> これくらいかしら?
お礼
このやり方でやって見たらできました! ありがとうございます!
次は、某HPからの引用です。 ただし、No.1さんの回答通り、ケースを1、2、3、0等に変換してSwitch文を使うという工夫がいるでしょう。 「switch文は、ある式が複数の定数である整数値の一つと一致しているかどうかをテストし、それに応じて分岐する多分岐判断機構である。 switch (式) { case 定数式: 文 case 定数式: 文 default: 文 } 各 case には一つ以上の数値を持つ定数あるいは定数式による名札を付ける。default という名札の付いた case は、他の case のどれもが満足されなかったときに実行される。default はなくてもよい。それがなくて、しかもどの case もマッチしない場合には、何も行われない。case と default節の順序は任意である。」(「プログラミング言語C」69~70頁) この switch文は、「ECMA 262 規格仕様」には含まれていませんが、JavaScript の基本仕様として定着していますので触れておきます。 JavaScript で、前述の「文字の出現回数を数える 1」を、switch文を使って書くと次のようです。 function charcount(text) { var i, l; var n = new Array(0, 0, 0); l = text.length; for (i=0; i<l; i++) { switch(text.charAt(i)) { case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": ++n[0]; break; case " ": case " ": ++n[1]; break; default: ++n[2]; break; } } digits.value=n[0]; space.value=n[1]; other.value=n[2]; }
お礼
こんなに詳しく書いて頂きありがとうございます!
- matui2000
- ベストアンサー率19% (30/155)
if文の始まるところを以下に置き換えてみてください。 と思ったのですが不等号の場合なのでSwitchは使えませんね・・・。?を使うことぐらいしか思いつきません。
お礼
URLまで載せて頂きありがとうございます!
お礼
うまく起動しました! ありがとうございます!