Snippets

sironekotoro Java言語プログラミングレッスン第3版 Kuku

Created by sironekotoro
/**
 *  Kukuは、九九の問題をランダムに10個表示して
 *  その正解数と正解率を表示するプログラムである.
 *  @author 結城浩
 *  @copyright by Hiroshi Yuki.
 *  Java言語プログラミングレッスン第3版
 *  https://www.hyuki.com/jb/
 */

import java.io.*;

public class Kuku {
        /** 表示する問題の個数 */
        public static final int MAX_QUESTION = 10;
        /**
         * 九九の問題を MAX_QUESTION 回繰り返して出題する。
         * 最後に正答率を表示する
         */
        public static void main(String[] args){
            int goodAnswers = 0; // 正答の個数
            System.out.println("これから九九の問題を" + MAX_QUESTION + "問出します。");
        /**
         *  以下、問題を繰り返し表示し、ユーザからの回答を判断する。
         *  その後、正答の数を数える。
         */
        for (int i = 0;i < MAX_QUESTION; i++){
            boolean ok = showQuestion(i+1);
            if (ok) {
                goodAnswers++;
            }
        }
        double rate = goodAnswers * 100.0 / MAX_QUESTION;
        System.out.println("");
        System.out.println("問題は" + MAX_QUESTION + "問ありました。");
        System.out.println("正しく答えられたのは" + goodAnswers + "問で、");
        System.out.println("間違えてしまったのは" + (MAX_QUESTION - goodAnswers) + "問です。");
        System.out.println("正答率は" + rate + "%です。");
        System.out.println("");
        System.out.println("お疲れ様。");
    }
    /**
     *  ShowQuestionは九九の問題を1問出し、答えを待つ。
     *  正答、後藤の別を表示する
     *  正答の場合は true を返す。
     */
    public static boolean showQuestion(int questno){
        int x = (int)(Math.random() * 9 ) + 1;
        int y = (int)(Math.random() * 9 ) + 1;
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("[第" + questno + "問]     " + x + " x " + y + " = ?");
            String line = reader.readLine();
            int result = Integer.parseInt(line);
            if (x * y == 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;
    }
}
use strict;
use warnings;
use feature qw/say/;
use utf8;
binmode STDOUT, ":encoding(cp932)";

my $MAX_QUESTION = 10;
my $good_answers = 0;

say "これから九九の問題を" . $MAX_QUESTION . "問出します。";

for ( my $i = 0; $i < $MAX_QUESTION; $i++ ) {

    if ( show_question( $i + 1 ) ) {
        $good_answers++;
    }
}

say "問題は" . $MAX_QUESTION . "問ありました。";
say "正しく答えられたのは" . $good_answers . "問で、";
say "間違えてしまったのは"
    . ( $MAX_QUESTION - $good_answers )
    . "問です。";

say "正答率は" . '$rate' . "%です。";
say "";
say "お疲れ様。";

sub show_question {
    my $questno = shift;

    my $x = int( rand(1) * 9 ) + 1;
    my $y = int( rand(1) * 9 ) + 1;

    say "第" . $questno . "問     " . $x . ' × ' . $y . ' = ?';
    my $line = <STDIN>;
    chomp $line;
    if ( $x * $y == $line ) {
        say "はい、正しいです。";
        return 1;
    }
    else {
        say "残念、間違いです。";
        return 0;
    }
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.