2016-12-11 1 views
0

私はこれを4時間試してみましたが、まだそれを得ることができます。 この入力はどのように処理できますか? instanceofを使用しようとしましたが、オブジェクトではありません。 非int型のものを入力すると、ゼロを入力していると考えられます。処理方法間違ったデータ型入力の例外がJavaのオブジェクトではありませんでした

if (input was not int or other datatype or even null){ 
    System.out.println("Integer please!"); 
} 

フルコード:

import java.util.*; 

public class InputParsing{ 
    static int [] a = {80, 60, 72, 85, 90}; 
    static String input; 
    static String output; 
    static Scanner sc = new Scanner(System.in); 

    public static void parseInput(){ 
     int num = 0; 
     double total = 0; 
     double average = 0; 

     output = "The 5 marks are:"; 
     for (int i=0; i<5; i++){ 
      output += " "+a[i]; 
     } 
     output += "\nAverage of how many numbers? "; 

     System.out.print(output); 
     input = sc.nextLine(); 
     try{ 
      System.out.println("Input length = " + input.length()); 
      num = Integer.parseInt(input); 
      if(num <= 0){ 
       throw new ArithmeticException(); 
      } 
      total = 0; 
      for (int i=0; i<num; i++) 
       total += a[i]; 
      average = total/num; 
     } 
     catch(Exception e){ 
      if (input was not int){ 
       System.out.println("Integer please!"); 
      } 
      else if(num > 0){ 
       System.out.println("Not more than 5 please!"); 
      } 
      else if(num < 0){ 
       System.out.println("No negative number please!"); 
      } 
      else if(num == 0){ 
       System.out.println("Don't input zero!"); 
      } 
      else{ 
       System.out.println("Something wrong!"); 
      } 

      throw new ArithmeticException(); 
     } 
     finally{ 
      System.out.println("Number = " + num); 
     } 
     System.out.println("Average over first " + num + 
          " numbers = " + average); 
    } 

    public static void main(String[] args){ 
     boolean done = false; 
     do{ 
      try{ 
       parseInput(); 
       done = true; 
      }catch(Exception e){ 
       System.out.println("Number should be 1 to 5!"); 
      }finally{ 
       System.out.println(); 
      } 
     }while (! done); 
    } 
} 

答えて

0

Integer.parseIntNumberFormatExceptionをスローします。これをキャッチしてください、これはあなたのケースです"Integer please!"です。

-1

Integer.parseInt()を呼び出す前に入力文字列が必要な整数範囲にあるかどうかだけで確認できませんか?

すなわち

if (char >= '1' && char <= '5') { 
    num = Integer.parseInt(char); 
} 
+0

それはそのようにしなければならなかった理由をいくつかのコードは、私は知りませんでしたように、理由は学校からの研究室です。いくつかのコードが与えられたからです。 –

+0

変数 'input'は' String'型です(そうでなければ、 'Integer.parseInt(input) 'の解析呼び出しはあまり意味がありません)。そのような変数は整数値と比較することはできません。 – Seelenvirtuose

+0

私のコードでエラーが発生しました。私は、charと整数のアルファ表現を比較しようとしていました –

関連する問題