如何获取变量的类型

时间:2014-07-07 06:10:27

标签: java types gettype

我对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

....等......

2 个答案:

答案 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
}