作成 2010.01.23
更新 2010.01.23
Java の練習 Level 1
http://oshiete1.goo.ne.jp/qa5602815.html
問題

ユーザに被除数と除数を尋ね、キーボードからの入力に対し、割り算の結果をディスプレイに表示するプログラムを作成しなさい。コンソール入力に関しては Java でコンソール入力待ちをするサンプル を参照。

解答例
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

class level1{
  public static void main(String args[]){
    String str = null;
    double d1 = 0.0;
    double d2 = 0.0;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try{
      System.out.print("非除数:\t");
      str = br.readLine();
      d1 = Double.parseDouble(str);
      System.out.print("除数:\t");
      str = br.readLine();
      d2 = Double.parseDouble(str);
      if(d2 == 0.0){
        System.out.println("除数に 0 が入力されました。");
      }else{
        System.out.println(d1 + " / " + d2 + " = " + (d1/d2));
      }
    }catch(NumberFormatException e){
      System.out.println("数字以外が入力されました:" + e.getMessage());
    }catch(Exception e){
      System.out.println("入力エラー:" + e.getMessage());
    }
  }
}
解説のようなもの

コンソール入力のサンプルを理解するのが Java 初心者にとって最難関。

  • コンソールで入力されたデータは文字列なので Double.parseDouble を使用する。数値以外が入力された場合は、NumberFormatException が投げられる。詳細は Double クラスを参照。入力を Ctrl+c などで中止すると NullPointerException が投げられる。今回はException で代表してまとめて catch している。
  • 0で除算すると結果が Infinity (Double.NEGATIVE_INFINITY or Double.POSITIVE_INFINITY) になるだけで、システム異常に陥ったりしないのでご安心を。
タグ: Java

©2004-2017 UPKEN IPv4