- 締切済み
Java言語 正答率、正答数の表示の仕方
自動的に3桁までの足し算の問題を繰り返して10問生成・表示し、入力された答えが正解か不正解かを表示する。最後に正答数と正答率を表示する。 というプログラムをeclipseで作っています。 問題を自動生成、表示、正解、不正解の表示まではできたのですが、正答数と正答率の表示の仕方がわかりません。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Java05 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { // TODO 自動生成されたメソッド・スタブ System.out.println("コンピュータが足し算の問題を10問出します"); int intC = 0; for(intC = 0;intC<10;intC++) { double dblA=Math.random()*1000; double dblB=Math.random()*1000; int intA=(int)dblA; int intB=(int)dblB; int intAns; intAns=intA + intB; System.out.println(intA +"+"+ intB +"="); System.out.println("あなたの答え="); BufferedReader myReader=new BufferedReader(new InputStreamReader(System.in),1); try{ String myString=myReader.readLine(); int myAns=Integer.parseInt(myString); if(myAns==intAns){ System.out.println("正解です!"); }else{ System.out.println("残念でした!正しい答えは"+intAns+"です。"); } }catch(IOException ie){System.out.println("エラーが発生しました。");} catch(NumberFormatException ne){ System.out.println("入力された数値が正しくないようです。"); } } } } どのようにすればよいでしょうか。。。 教えてください!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- koko_u_
- ベストアンサー率18% (459/2509)
>正答数と正答率の表示の仕方がわかりません。 とりあえず、main にだらだらコードを書くのを止めて、機能分割しよう。 手始めに、問題を出題するクラスを別に作成して、そいつに「問題作成」「表示」「正解数のカウント」をしてもらう。
お礼
少し家族に教えてもらって、 きれいな形でできました!ありがとうございます! こんな感じで。 import java.io.*; public class Java05 { /** 表示する問題の個数 */ public static final int MAX_QUESTION=10; /** * 足し算の問題をMAX_QUESTION回繰り返して出題する。 * 最後に正答率を表示する。 */ public static void main(String[] args){ int goodAnswer=0; //正答の個数 System.out.println("これから足し算の問題を"+MAX_QUESTION+"問出します。"); /* * 以下、問題を繰り返し表示し、ユーザからの解答を判断する。 * その後、正答の数を数える。 */ for(int i=0;i<MAX_QUESTION;i++){ boolean ok=showQuestion(i+1); if(ok){ goodAnswer++; } } double rate=goodAnswer*100.0/MAX_QUESTION; System.out.println(""); System.out.println("問題は"+MAX_QUESTION+"問"); System.out.println("正答数は"+goodAnswer+"問"); System.out.println("不正解数"+(MAX_QUESTION-goodAnswer)+"問"); System.out.println("正答率は"+rate+"%"); } /** * showQuestionは足し算の問題を1問出し、答えを待つ。 * 正答、誤答の別を表示する。 * 正答の場合は ture を返す。 */ public static boolean showQuestion(int questno){ double dblA=Math.random()*1000; double dblB=Math.random()*1000; int intA=(int)dblA; int intB=(int)dblB; BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("[第"+questno+"問] "+intA+"+"+intB+"="); String line=reader.readLine(); int result=Integer.parseInt(line); if(intA+intB==result){ System.out.println("正解!"); return true; }else{ System.out.println("不正解!"); return false; } }catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("入力が正しくありません。"); } return false; } }