Java言語の型

Java 言語の型は大きく分けると、

名前と年齢をたずねるプログラム

ソースコード

源文件
  1|/* HowOldAreYou.java */
  2|
  3|import java.io.*;
  4|public class HowOldAreYou {
  5|    public static void main (String[] args) {
  6|        System.out.println("あなたの名前を入力してください。");
  7|        BufferedReader reader = new BufferedReader (new InputStreamReader (System.in));
  8|        try {
  9|            String line = reader.readLine();
 10|            System.out.println(line + "さん、こんいちは。");
 11|            System.out.println("年齢を入力してください。");
 12|            line = reader.readLine();
 13|            int age = Integer.parseInt(line);
 14|            System.out.println("いま" + age + "歳とすると、10年後は" + (age + 10) + "歳ですね。");
 15|        } catch (IOException e) {
 16|            System.out.println (e);                                                   
 17|        } catch (NumberFormatException e) {
 18|            System.out.println("年齢が正しくありません。");
 19|        }
 20|    }
 21|}

実行結果

あなたの名前を入力してください。
もう
もうさん、こんいちは。
年齢を入力してください。
100
いま100歳とすると、10年後は110歳ですね。

「String line = reader.readLine();」という行があります。これが1回目の入力待ちです。「line = reader.readLine();」は2回目の入力待ちを行っている部分です。

ここで使われているのは read.readLine というメソッドです。read.readLine は文字列を1行分取得するメソッドです。

九九練習プログラム

ソースコード

源文件
  1|/* Kuku.java */                                                                       
  2|
  3|import java.io.*;
  4|public class Kuku {
  5|    /* 表示する問題の個数 */
  6|    public static final int MAX_QUESTION = 10;
  7|    public static void main (String[] args){
  8|        int goodAnswers = 0;  /* 正答の個数 */
  9|        System.out.println("これから九九の問題を" + MAX_QUESTION + "問出します");
 10|        /* 以下、問題を繰り返し表示し、ユーザからの解答を判断する */
 11|        for(int i = 0; i < MAX_QUESTION; i++){
 12|            boolean ok = showQuestion(i + 1);
 13|            if (ok) {
 14|                goodAnswers++;
 15|            }
 16|        }
 17|        double rate = goodAnswers * 100.0 / MAX_QUESTION;
 18|        System.out.println("");
 19|        System.out.println("問題は" + MAX_QUESTION + "問ありました。");
 20|        System.out.println("正しく答えられたのは" + goodAnswers + "問で、");
 21|        System.out.println("間違ってしまったのは" + (MAX_QUESTION - goodAnswers) + "    問です。");
 22|        System.out.println("正答率は" + rate + "%です。");
 23|        System.out.println("");
 24|        System.out.println("お疲れさま。");                                            
 25|    }
 26|    /*showQuestion は九九の問題を1問出し、答えを待つ。*/
 27|    public static boolean showQuestion (int questno) {
 28|        int x = (int) (Math.random() * 9) + 1;
 29|        int y = (int) (Math.random() * 9) + 1;
 30|        BufferedReader reader = new BufferedReader (new InputStreamReader(System.in));
 31|        try{
 32|            System.out.println("[第" + questno + "問]   " + x + " X " + y + " = ?");
 33|            String line = reader.readLine();
 34|            int result = Integer.parseInt(line);
 35|            if(x * y == result) {
 36|                System.out.println("はい、正しいです");
 37|                return true;
 38|            } else {
 39|                System.out.println("残念、まちがいです。");
 40|                return false;
 41|            }
 42|        } catch (IOException e) {
 43|            System.out.println(e);                                                    
 44|        } catch (NumberFormatException e) {
 45|            System.out.println("入力が正しくありません。");
 46|        }
 47|        return false;
 48|    }
 49|}

実行結果

これから九九の問題を10問出します
[第1問]   5 X 6 = ?
30
はい、正しいです
[第2問]   8 X 4 = ?
32
はい、正しいです
[第3問]   3 X 1 = ?
3
はい、正しいです
[第4問]   8 X 5 = ?
40
はい、正しいです
[第5問]   6 X 3 = ?
10
残念、まちがいです。
[第6問]   1 X 4 = ?
4
はい、正しいです
[第7問]   5 X 1 = ?
5
はい、正しいです
[第8問]   6 X 2 = ?
12
はい、正しいです
[第9問]   3 X 3 = ?
9
はい、正しいです
[第10問]   6 X 3 = ?
18
はい、正しいです

問題は10問ありました。
正しく答えられたのは9問で、
間違ってしまったのは1問です。
正答率は90.0%です。

お疲れさま。


「int x = (int)(Math.random() * 9) + 1;」という暗号のよう行が入っています。これは九九の問題をデタラメ(ランダム)に作り出すための部分です。

Math.random というメソッド(Math クラスの random メソッド)は、呼ぶ出すことに0.0以上1.0未満の double のでたらめな数(乱数)を返します(double型)。したがって、Math.random() * 9 という式は、0.0以上9.0未満の double の値になります。この式の前に(int)と書くと、この double の値を int 型に変換してくれます。これをキャスト演算子と呼びます。即ち、式「(int)(Math.random() * 9)」は、0以上9未満(即ち0以上8以下)の int の値になります。これを1を加えた式は、1以上9以下の int の値になります。

booleanについて

boolean は真偽値を表すための型です。真は true、偽は false という語で表します。

try...catch について

try {...} の中で起こったエラーを catch(...) {...}の部分で処理をしているのだ、と覚えて下さい。

Chapter3 @ Java言語目録 @ HomeWork List @ 昭亮's Homepage