JavaScriptプログラムで複数の数値の合計を求める方法

このQ&Aのポイント
  • 入力された複数の数値を合計するJavaScriptプログラムを作成する課題があります。
  • プログラムは、不定個の数値を入力し、その合計を求めるものです。
  • 現在、上手く実装できずに困っています。どの部分を修正すればいいか、教えていただきたいです。
回答を見る
  • ベストアンサー

▲▲JavaScriptに詳しい人見てください▲▲

入力された複数の (不定個の) 数値の合計を求めるプログラム . 空の入力でデータ入力の終了を表すものとする (少なくとも1個はデータを入力するものとする). をつくる課題が出ているのですが、 なかなか上手く行きません。 1: 2: <title>JavaScript Sample 4-2</title> 3: <script type="text/javascript"> 4: <!-- 5: // 変数の宣言 6: var i, x; 7: 8: // 入力・計算 9: x = Number(prompt("?")); 10: i = prompt("?"); 11: while (x != "") { 12: for(i = 1; i <= Number(x); i++){ 13: i +=Number(prompt( i + "つ目の数字を入力してください")); 14: } 15: } 16: 17: // 出力 18: document.writeln("<p>合計は " + x + " です.</p>"); 19: 20: // --> 21: </script> というのを1番始めに打ったのですが、 意味不明なことになってしまうことに気付いて 9~15行目の部分を,書きなおすと x = Number(prompt("?")); i = prompt("?"); while (x != "") { i +=Number(prompt("数値を入力してください")); } としましたが,これだと無限ループから抜けられませんし… かなりめちゃくちゃなことをしていることは分かるのですが どこをどう直せばいいかわからないレベルなんです。 ご教授いただければ幸いですっ

質問者が選んだベストアンサー

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

とりあえずIE8とChromeで動いたコードはこんな感じです。 1:<title>JavaScript Sample 4-2</title> 2:<script type="text/javascript"> 3:<!-- 4:// 変数の宣言 5:var input = 0; 6:var total = 0; 7: 8:// 入力・計算 9:for(;;){ 10: input = prompt("加算値を入力してください"); 11: 12: if (input == "") 13: break; 14: 15: total += parseInt(input, 10); 16:} 17: 18:// 出力 19:document.writeln("<p>合計は " + total + " です.</p>"); 20:// --> 21:</script> 一度変更された後に引っかかっていた理由の主な箇所としては、 ループ終了条件の「x」がループ内で再代入されない事にあります。 自分もJavascriptを現場で使ったことが無いので、コーディングスタイルには自信有りません。 ただ、プログラム全般として変数やら関数の名前は多少面倒でも意味のある物をつけましょう。 そうすれば、自然と動きは掴めるようになります。 <おまけ> 課題という事であれば終了条件の「x!=""」は正しい(仕様通り)かもしれませんが、 実際問題アルファベットやらなんやら入力されたら困りますよね。 こういう時は条件を厳しくして、想定外の物全部弾くようにされた方が良いかなと思います。

hideyuki-man
質問者

お礼

ありがとうございます! とても勉強になりました(^^) 変数を意味のあるものにするだけで グッと分かりやすくなった気がします! ひとつお聞きしたいのですが、 for~ではなくwhile~で組むことは不可能ですか? whileで組んだときに、ループからの脱出法が分からなかったので、もし不可能じゃないのなら教えていただきたいです。

その他の回答 (1)

  • sholmes
  • ベストアンサー率81% (89/109)
回答No.2

等といっておきながら、頭の変数代入が変ですね var input = 0; は var input; だけにしといて下さい。 しかし、okwaveさんは行頭に番号入れたのにインデント解除されちゃうんですね・・・

hideyuki-man
質問者

お礼

ありがとうございます! とても勉強になりました(^^) 変数を意味のあるものにするだけで グッと分かりやすくなった気がします! ひとつお聞きしたいのですが、 for~ではなくwhile~で組むことは不可能ですか? whileで組んだときに、ループからの脱出法が分からなかったので、もし不可能じゃないのなら教えていただきたいです。

関連するQ&A

  • 反復処理について

    大学で勉強を始めたばかりの物です。 入力された5つの数値の合計を反復を用いて求めるプログラムを 作成したいのですが、 自分で考えても限界があり、どうすれば良いのかご指摘下さいm(__)m <pre><script type="text/javascript"> <!-- // 変数の宣言 var i, x, sum; // i:カウント,x:入力,sum:合計 // 入力・計算 sum = -Infinity; for (i = 1; i <= 5; i++) { x = Number(prompt("x" + "= ?")); if("x" + i + " = ?") sum= x ++ } // 出力 document.writeln("合計は"); document.writeln(sum + " です"); // --> </script></pre>

  • ▲▲JavaScriptに詳しい人見てください▲▲

    http://okwave.jp/qa/q6738147.html ここで質問を立てたのですが、解決を押してしまったので もういちど立てさせて頂きました。 ひとつお聞きしたいのですが、 for~ではなくwhile~で組むことは不可能ですか? whileで組んだときに、ループからの脱出法が分からなかったので、 もし不可能じゃないのなら教えていただきたいです。 -----以下引用----- とりあえずIE8とChromeで動いたコードはこんな感じです。 1:<title>JavaScript Sample 4-2</title> 2:<script type="text/javascript"> 3:<!-- 4:// 変数の宣言 5:var input = 0; 6:var total = 0; 7: 8:// 入力・計算 9:for(;;){ 10: input = prompt("加算値を入力してください"); 11: 12: if (input == "") 13: break; 14: 15: total += parseInt(input, 10); 16:} 17: 18:// 出力 19:document.writeln("<p>合計は " + total + " です.</p>"); 20:// --> 21:</script> 一度変更された後に引っかかっていた理由の主な箇所としては、 ループ終了条件の「x」がループ内で再代入されない事にあります。 自分もJavascriptを現場で使ったことが無いので、コーディングスタイルには自信有りません。 ただ、プログラム全般として変数やら関数の名前は多少面倒でも意味のある物をつけましょう。 そうすれば、自然と動きは掴めるようになります。 <おまけ> 課題という事であれば終了条件の「x!=""」は正しい(仕様通り)かもしれませんが、 実際問題アルファベットやらなんやら入力されたら困りますよね。 こういう時は条件を厳しくして、想定外の物全部弾くようにされた方が良いかなと思います。

  • Javascriptについて教えてください。

    Javascriptについて教えてください。 整数を入力してその入力した整数の約数の数を表示するプログラムを つくりたいのですがどうすればよいのでしょうか? 例えば、6と入力したらブラウザ上に約数の個数つまり、4と表示します。 また0以下の数字は整数を入力してくださいと表示されるようにしたいです。 途中までは作りました。 解説付きで教えてください。 <html> <head> <title>整数の約数の数を表示する</title> </head> <body> <p><script type="text/javascript"> <!-- var number; var i; number = prompt("整数を入力してください"); for(i = 0; i < 10;i++){ if(number <= 0) document.write("整数を入力してください。"); else if(number >= 1)

  • javascriptで合計を出力したいです

    まず最初にソース載せます⇓ <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-type" content="text/html; charset=shift-jis"> <title>総合演習</title> </head> <body bgcolor="#FFFFFF"> <script type="text/javascript"> var ninzu2; var ninzu; ninzuu2=Number(ninzu); ninzu=prompt('人数を入力してください', '3');//人数を入力 var points2; var points; points2=Number(points) var points=new Array(); for(var i=0; i<ninzu; i++){ var anaswer; points[i] = anaswer; anaswer = prompt("点数を入力してください",""); var anaswer2; anaswer2=Number(anaswer); } var sum2; var sum=0; sum2=Number(sum); for(i=0; i<points.length; i++){ sum=+points[i]; } document.write(sum); </script> </body> </html> エラーはいっさいありません。ただ計算式が間違ってるだけです 3回入力し、1回目10, 2回目20、 3回目30と入力すると出力結果は20が返ってきました。 要件は入力した数字分の合計を求めるという物です。 けど20が返ってくるってことは平均を出力しているってことですよね? 考えてもわからなくってアドバイスお願いします。

  • 自然数を序数に

    大学で、勉強をはじめたばかりの者です。 1~20の自然数を入力して、その数に対応する序数を表す プログラムを作成したいのですが、 自分で作ると以下のようになりました。 どこをどう直せばちゃんと実行できるようになりますか?(>_<) <pre><script type="text/javascript"> <!-- // 変数の宣言 var number; // 入力 number = prompt("1~20の自然数を入力して下さい"); //(計算?) 出力 switch(number) { case "1": document.writeln("1st"); break; case "2": document.writeln("2th"); break; case "3": document.writeln("3rd"); break; default: document.writeln("number + th"); } // --> </script></pre>

  • JavaScriptのコードの間違いを教えて

    いつもお世話になっております。 現在、JavaScriptの勉強をしているのですが、if構文のところでつまずいてしまいした。 下のコードがうまく実行できません。 間違いを指摘して頂ければと思います。 <doctype! html> <html lang="ja"> <head>    <meta charset="UTF-8">    <title>Javascript</title> </head> <body> <script type="text/javascript">    var x = window.prompt("好きな値を入力してください","100");    if (x>100)       {window.document.write("100より大きいです");}    else {if(x<100))       {window.document.write("100より小さいです");}       else {if(x=100))          {window.document.write("100です");}       }    } </script> </body> </html> なお、テキストエディタで記述し、実行はGoogleChromeで行いました。 よろしくお願いします。

  • javascriptに関する質問です

    <html> <head> <title>javascript BMIを求める</title> </head> <body> <h2>BMI を求める</h2> <SCRIPT TYPE="text/JavaScript"> // JavaScript var weight, height, bmi; weight = prompt("60[kg] "); height = prompt(' 175[cm] '); height = height/100; bmi = weight/(height * height); document.write('BMI は', bmi); // JavaScript </script> </body> </html> をif文かfor文を使いBMIを計算したいです、どのようにすればいいのかご教授ください

  • javascriptで質問があります。

    title1で連想配列からaとbの値を出したいのですがundefinedが出ます。 どうすればいいのでしょうか。教えていただけると助かります。 <script type="text/javascript"> <!-- t0000={title:"a",id:"kin"}; t0001={title:"b",id:"gin"}; i=0; while(i<2){ c = "t000"+i alert(c); title1 = c["title"]; alert(title1); i++ } //--> </script>

  • JavaScriptで総和を求めるプログラム

    数値を入力させて総和を求めるプログラムなんですが、ブラウザが真っ白で何も出ません。 どこが間違っているのでしょうか。ブラウザはfirefoxです。IEでやってみたら、窓は出ますが、undefinedの文字が表示されていて、数字をそこに入力しても何も出ません。 <html> <body> <script> s=0; n=parselnt(prompt("nを入力してください")); for(i=1;i<=n;i++){ s=s+i; } document.write("s=",s); </script> </body> </html>

  • javascriptに関する質問です

    先ほどと同じような質問ですが質問方法を変えます <html> <head> <title>javascript BMIを求める</title> </head> <body> <h2>BMI を求める</h2> <SCRIPT TYPE="text/JavaScript"> // JavaScript var weight, height, bmi; weight = prompt("60[kg] "); height = prompt(' 175[cm] '); height = height/100; bmi = weight/(height * height); document.write('BMI は', bmi); // JavaScript </script> </body> </html> のBMIを求める関数を呼び出すようにjavascriptをBMIを求める関数を使ったプログラムにしたいのdスがどのようにしていいのか分かりませんご教授ください