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

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

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

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

Q&A

解決済

2回答

900閲覧

複数の数値が定義されている配列data1とdata2から「data1とdata2を合わせた平均値」と「平均値以上の数値」を表示するプログラム

Eltk

総合スコア51

JavaScript

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

0グッド

1クリップ

投稿2018/11/22 09:52

前提・実現したいこと

プログラミング初心者(勉強中)で、現在、先月まで行っていたオンラインスクールの課題の復習を行っております。
先生の補助なしで自力でコードを書こうとしましたが、うまく表示されませんでした。
初心者の質問で申し訳ないのですが、「どの部分がだめだったのか」を
教えていただけましたら幸いです。
どうぞよろしくお願いいたします。

課題内容
複数の数値が定義されている配列data1とdata2から「data1とdata2を合わせた平均値」と「平均値以上の数値」を表示するプログラムを作成してください。

発生している問題・エラーメッセージ

エラーメッセージは特に出てこないのですが、
以下の内容しか表示されません。
本来は、この下に
data1:59
data1:100
data1:84
data1:97
data2:63
data2:64
data2:97
data2:98
と表示させる必要がございます。

※現在表示内容
平均値:59
平均値以上の数値は以下

エラーメッセージ

該当のソースコード

ソースコード(scriptタグの中身のみ添付させていただきます)
<script> var data1 = [59, 39, 100, 2, 15, 40, 84, 97]; var data2 = [63, 18, 64, 97, 50, 98]; var sum = 0 for(var i=0; i<data1.length; i++) { sum +=data1[i]; } for(var i=0; i<data2.length; i++) { sum +=data2[i]; } var ave =sum/(data1.length+data2.length); document.write('<p>平均値:'+ave+'</p>'); document.write('<p>平均値以上の数値は以下</p>'); for(var j=0; j<data1.length; j++); { if(data1[j]>=ave) { document.write('data1:'+data1[j]+'<br>'); } } for(var k=0; k<data2.length; k++); { if(data2[k]>=ave) { document.write('data2:'+data1[k]+'<br>'); } } </script>

試したこと

レッスンで一度書いたコードがございましたので、そちらを貼り付けしましたが、
そちらはうまく表示されました。僕のコードとのやり方の違いがわからない状態です。

※以下、レッスン時のコードです(scriptタグの中身のみ添付させていただきます)
<script>
var data1 = [59, 39, 100, 2, 15, 40, 84, 97];
var data2 = [63, 18, 64, 97, 50, 98];

/* 以下に課題処理を追加 */ var sum=0 for (var i = 0; i < data1.length; i++) { sum += data1[i]; } for (var i = 0; i < data2.length; i++) { sum += data2[i]; } var ave = sum / (data1.length+data2.length); document.write('<p>平均値:' + ave + '</p>'); document.write('<p>平均値以上の数値は以下</p>'); for(var k=0; k<data1.length; k++) { if(data1[k]>=ave) { document.write('data1:'+data1[k]+'<br>'); } } for(var l=0; l<data2.length; l++) { if(data2[l]>=ave) { document.write('data2:'+data2[l]+'<br>'); } } </script>

補足情報(FW/ツールのバージョンなど)

使用エディタは、CS5のDreamweaverです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

JavaScript

1 for(var j=0; j<data1.length; j++); { 2 if(data1[j]>=ave) { 3 document.write('data1:'+data1[j]+'<br>'); 4 } 5 } 6 for(var k=0; k<data2.length; k++); { 7 if(data2[k]>=ave) { 8 document.write('data2:'+data1[k]+'<br>'); 9 } 10 } 11

ではなく

JavaScript

1 for(var j=0; j<data1.length; j++) { 2 if(data1[j]>=ave) { 3 document.write('data1:'+data1[j]+'<br>'); 4 } 5 } 6 for(var k=0; k<data2.length; k++) { 7 if(data2[k]>=ave) { 8 document.write('data2:'+data1[k]+'<br>'); 9 } 10 }

です。

JavaScript

1 for(var j=0; j<data1.length; j++); { 2 if(data1[j]>=ave) { 3 document.write('data1:'+data1[j]+'<br>'); 4 } 5 }

って書くと

JavaScript

1 for(var j=0; j<data1.length; j++) { 2 } 3 4 if(data1[j]>=ave) { 5 document.write('data1:'+data1[j]+'<br>'); 6 }

と同一ですfor(var j=0; j<data1.length; j++);<-このカンマが悪さします


https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Loops_and_iteration#for_statement
for文は次の文をループしますので;を入れてしまうとから命令をループします(複数行ループ処理したい場合は{}でグループ化させる必要がある)

投稿2018/11/22 10:07

編集2018/11/22 10:13
rururu3

総合スコア5545

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

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

Eltk

2018/11/22 11:27

ご返信が遅くなり申し訳ございません。 比較を交えて解説くださり、ありがとうございました! セミコロンの役割を全く理解できておりませんでした。。 丁寧に教えてくださり、どうもありがとうございました!
guest

0

とりあえずこんな所でしょうか

js

1<script> 2var data1 = [59, 39, 100, 2, 15, 40, 84, 97]; 3var data2 = [63, 18, 64, 97, 50, 98]; 4var sum = 0 5 6for(var i=0; i<data1.length; i++) { 7sum +=data1[i]; // 全角スペースになっている 8} 9for(var i=0; i<data2.length; i++) { 10sum +=data2[i]; 11} 12var ave =sum/(data1.length+data2.length); 13document.write('<p>平均値:'+ave+'</p>'); 14document.write('<p>平均値以上の数値は以下</p>'); 15for(var j=0; j<data1.length; j++); { // セミコロンがある 16if(data1[j]>=ave) { 17document.write('data1:'+data1[j]+'<br>'); 18} 19} 20for(var k=0; k<data2.length; k++); { // セミコロンがある 21if(data2[k]>=ave) { 22document.write('data2:'+data1[k]+'<br>'); 23} 24} 25</script>

投稿2018/11/22 10:01

akihiro3

総合スコア955

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

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

Eltk

2018/11/22 11:24

迅速にご回答いただきまして、ありがとうございます! セミコロンがあることに気づきませんでした。 うまく動作いたしました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問