我对Java很陌生,所以请原谅我的noob问题。
如何使error checking
逻辑语法正确以及我可以使用哪些内置方法?
public static void initialize(HighScores[] scores) {
Scanner input = new Scanner(System.in);
// capture input
for (int i = 0; i < 5; i++) {
System.out.println("Enter the name for score #" + i + ": ");
String name = input.next(); // Alex
System.out.println();
System.out.println("Enter the score for score #" + i + ": ");
int score = input.nextInt();
// Error checking
// if the 'input' is NOT of type 'int'
if (score.getClass().getSimpleName() != int) {
// Ask to input a numeric value
System.out.println("Please enter a numeric value! :)");
score = input.nextInt(); // inputting a value in again
}
System.out.println();
HighScores object = new HighScores(name, score);
scores[i] = object;
}
}
如果正确的话会是什么样子:
输入得分#0的名称: 亚历
输入得分#0的分数: 小号
请输入数值! :) 5
输入得分#0的名称: 约翰
输入得分#0的分数: 3
....等......
答案 0 :(得分:4)
你好像很困惑,
try {
int score = input.nextInt();
} catch (InputMismatchException ime) {
ime.printStackTrace();
}
根据{{3}} ,永远属于int
类型(或者您将获得例外情况)
将输入的下一个标记扫描为int。
并注意投掷说
InputMismatchException - 如果下一个标记与整数正则表达式不匹配,或者超出范围
也可以先调用Scanner#nextInt()
,
if (input.hasNextInt()) {
int score = input.nextInt();
} else {
System.out.println(input.next() + " isn't an int");
}
答案 1 :(得分:2)
首先,正如他们在评论中提到的那样,你不需要这个。如果您的变量定义为int
,则 int
并且您不必检查此变量。
其次,int
是原始的,所以你不能说score.getClass()
。
但是在某些情况下(如果您编写的某些通用代码必须关注几个但某些类型),您可能希望修复if
语句,如下所示:
Integer score = .....
.........
if (Integer.class.equals(score.getClass())) {
// your code here
}