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

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

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

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

Q&A

解決済

2回答

1886閲覧

クイズで全問正解しても正答率が100%にならない

begine

総合スコア7

JavaScript

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

0グッド

0クリップ

投稿2020/07/01 15:54

編集2020/07/02 10:08

前提・実現したいこと

前回、ここで(https://teratail.com/questions/274345=カウントが0になったら残りの問題全てを不正解にしたい)で質問をさせていただきました。

そこで正答率を「正解の数/質問の数」で計算するというアドバイスをいただいたのでコードを書き直してみたのですが、全問正解しても正答率が50%になってしまいます。

以下のようにコードを書きました。

const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100;

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

全問正解してもクイズの正答率が100%にならない。

該当のソースコード

javascript

1 2 3 let currentNum = 0; 4 let score = 0; 5 6 7 setQuiz(); 8 9 btn.addEventListener('click', () => { 10 if (btn.classList.contains('disabled')) { 11 return; 12 } 13 btn.classList.add('disabled'); 14 15 showResult(); 16 17 function showResult(){ 18 const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100;  19// [正答率の計算 %] 20 if (currentNum === quizSet.length - 1) { //最終問題だったらスコアを表示 21 scoreLabel.innerHTML = `${quizSet.length} <br> 22 ${score}<br> 23 ${accuracy.toFixed(2)}%`; 24 result.classList.remove('hidden'); 25 } else { //違ったら次の問題へ 26 currentNum++; 27 setQuiz(); 28 } 29 } 30 }); 31}

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

ku__ra__ge

2020/07/01 17:02

> const accuracy = score + quizSet.length === 0 ? 0 : score / (score + quizSet.length) * 100; このコードは「正解の数/質問の数」には見えませんが、あなたはaccuracyにどのような意図の値を格納するためにこのコードを書いたのですか?
m.ts10806

2020/07/01 20:05

へたに三項演算子使うよりひとつずつ値を見ていった方が確実かと思います。
begine

2020/07/02 01:23 編集

このコードはサイトにあるコードを参考に書きました。 accuracyはテンプレートリテラルで表示させるために格納させると解釈していました。 また、このコードが三項演算子ということも検索で知ったので、自分の知識不足のため的外れな質問をしていたのだとわかり、不快にさせてしまった方は申し訳ありませんでした。
m.ts10806

2020/07/02 01:42

いえ、的外れというのではなく、全体の見通しが良くなくなるし、使いこなすのはそこまで簡単ではないので、いきなりまとまったコードを書くのではなく、素直にひとつずつ仕様通りに流れ通りに書いていったほうが自分にも他者にも優しいコードになるのでは?という話をしてます
begine

2020/07/02 01:51

ありがとうございます、了解しました。 もう一度コードを自分なりに書き直してみたいと思います。
guest

回答2

0

そこで正答率を「正解の数/質問の数」で計算するというアドバイスをいただいたので
score / (score + quizSet.length) * 100;

どう見てもあなたが言ってるようには実装されてません。

正解の数、と質問の数、はそれぞれどれが表してるんでしょうか

投稿2020/07/01 22:26

y_waiwai

総合スコア87774

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

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

0

自己解決

全体のコードを見直し、このコードはどう動くのかをひとつひとつコメントで書き留めをしていった結果、正確に表示することができました。

score / (score + quizSet.length) * 100;

【修正した箇所】

javascript

1 2const accuracy = score + quizSet.length === 0 ? 0 : score / quizSet.length * 100;

時間が経って再度この質問を見たら、こんな間違いをしていたのかと反省しました。
コメントして頂いた方々ありがとうございました。

投稿2020/07/02 09:56

begine

総合スコア7

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問