• 締切
  • すぐに回答を!

前回の質問のプログラムの応用 Java言語

  • 質問No.3711322
  • 閲覧数150
  • ありがとう数0
  • 回答数2

お礼率 33% (1/3)

MAX_QUESTION
の部分を指定できるようにしたいのです!
たとえば、20と入力したら、20問、問題が生成されるようなプログラムです。
教えてください。よろしくお願いします。

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;
}
}

回答 (全2件)

  • 回答No.2

ベストアンサー率 57% (22/38)

こんにちは。
もし、プログラム中でユーザに入力させたいのであれば、System.inを使ってみては如何でしょうか。
「java」とか「標準入力」とかで検索するとよいと思います。
  • 回答No.1

ベストアンサー率 18% (459/2509)

main() が何故引数 args を持っているかを思い出すだけです。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ