みたにっき@はてな

三谷純のブログ

Java 標準入力

Javaで標準入力から渡された数字を、例えばdouble型の値として処理しようとした場合、一般的な書籍のほとんどで次のような方法が紹介されています。

import java.io.*;  

public class Example {
  public static void main(String args[]) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
      System.out.println("値を入力してください");
      double d = Double.valueOf(br.readLine()).doubleValue();
      System.out.println("入力した値の2乗は" + (d*d));
    }
    catch(IOException e) {
    }
  }
}

プログラムの楽しみは、「プログラムに値を渡すと、それに応じた結果が出てくる」ということを、様々に体験することだと思うのですが、その第一歩として、この方法はちょっと敷居が高いような気がします。BufferedReader のインスタンスを作るところは「おまじないだよ」と言ってしまうとしても、それが結構長いし、double型の値を取得するところも煩雑、try 〜 catch構文も必要だったりして大変です。

でも、Scannerクラスを使うと結構簡単。同じことが次のコードで実現できてしまいます。

import java.util.*;

public class Example {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("値を入力してください");
    double d = s.nextDouble();
    System.out.println("入力した値の2乗は" + (d*d));
  }
}

授業の中の例題では、こちらを使うようにしようと計画中。