| ■ 誤った値の入力 | 
      
上記で説明したいずれの方法で入力した場合も、値は文字列としてコンピュータに入力されます。したがって、入力された値が数値でなくても入力時には問題になりません。 しかし、その入力値を数値に変換しようとすると、例えば Integer.parseInt() や Double.parseDouble()を用いて文字を数値に変換しようすると、実行時にエラーが発生します。 次の実行例は、身長に誤った値(1qw)が入力されたために標準体重が計算できず、エラーを出した例です。 
[egi@taro]$ java JcInput2
身長?1qw
Exception in thread "main" java.lang.NumberFormatException: For input string: "1qw"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:477)
        at java.lang.Integer.parseInt(Integer.java:518)
        at JcInput2.main(JcInput2.java:13)
[egi@taro]$ 
このように、数値であることを前提に実行されるメソッドで、数値でない値が引数として渡されると実行時にエラーが出力されプログラムが停止します。
これはプログラムの翻訳時(javac)には出ない誤りです。
人間が入力する場合は、必ず誤りをおかす可能性があります。そのたびにエラーを起こし中断するプログラムでは役に立ちません。そこで、プログラム実行中に誤りが起こる可能性がある箇所では、それを想定してプログラム作成しておく必要があります。 
  | 
        
| ■ エラー表示して計算しない方法 | 
次の実行例は、身長を入力して標準体重を出力するプログラムです。 このプログラムでは、以前のプログラムと異なって、正しいデータを入力すると標準体重を計算し出力しますが、誤りのデータを入力すると次のようにメッセージを出力し、標準体重の計算をしません。 [egi@taro prog]$ java JcInput3 身長?156 身長は156です。 標準体重は50.4です。 [egi@taro prog]$ java JcInput3 身長?1we データが誤りで計算できません [egi@taro prog]$ 
このプログラムは、次のように作成されています。
 
    try {
              エラーの発生する命令
         }
   catch(エラーの種類){
               エラーが発生した場合に実行する命令
             }
         | 
        
| ■ エラー表示して再入力させる方法 | 
次のように入力した値がエラーであった時、エラーメッセージを表示した後に、 再入力させてくれるプログラムであれば、さらに親切です。 [egi@taro]$ java JcInput4 身長?1qa データが誤りで計算できません 身長?1wd データが誤りで計算できません 身長?157 身長は157です。 標準体重は51.300000000000004です。 [egi@taro]$上記のような処理ができるプログラムは、以下のように繰り返し命令を使って書けます。 繰り返し命令の詳細は、次に学習しますが、ここでは入力処理が、 
 
// 数値を入力し、計算結果を表示する。
import java.io.*;
public class JcInput4{
    public static void main(String[] arges) throws IOException {
	String  sincho;
	int dt;
                   
	BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
	while(true){
                       System.out.print("身長?");
                       sincho = kbd.readLine();
          
                       try{
                           dt = Integer.parseInt(sincho);
                           System.out.println("身長は"+sincho+"です。");
                           System.out.println("標準体重は"+((dt-100)*0.9)+"です。");
                          }
                       catch(NumberFormatException e){
                           System.out.println("データが誤りで計算できません");
                           continue;
                          } 
	   break;
	}
			   
    }
}
         | 
        
|               
       |