私はこれを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);
}
}
それはそのようにしなければならなかった理由をいくつかのコードは、私は知りませんでしたように、理由は学校からの研究室です。いくつかのコードが与えられたからです。 –
変数 'input'は' String'型です(そうでなければ、 'Integer.parseInt(input) 'の解析呼び出しはあまり意味がありません)。そのような変数は整数値と比較することはできません。 – Seelenvirtuose
私のコードでエラーが発生しました。私は、charと整数のアルファ表現を比較しようとしていました –