Snippets

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

Created by sironekotoro

File Kaku.java Added

  • Ignore whitespace
  • Hide word diff
+/**
+ *  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;
+    }
+}

File Kaku.pl Added

  • Ignore whitespace
  • Hide word diff
+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;
+    }
+}
HTTPS SSH

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