如何检查存储给定值(包含在String中)的变量类型?

时间:2013-11-02 13:43:47

标签: java java-ee netbeans

如何检查变量的类型。这样:

伪代码:

do{
     VARIABLE =  JOptionPane.showInputDialog(null,"X = ");

}while(VARIABLE != Integer);

Set_X(VARIABLE);

3 个答案:

答案 0 :(得分:2)

在这种情况下,您的VARIABLE变量的类型为String

您可以尝试/捕获该变量上的Integer.valueOf以获取其Integer值。

如果抛出NumberFormatException,则表示用户输入无法转换为Integer

例如(草案代码):

// initializing Integer interpretation
Integer input = null;
// infinite loop - breaks only once user has entered a valid integer-parseable value
while (true) {
    // trying to convert user input after showing option pane
    try {
        input = Integer.valueOf(JOptionPane.showInputDialog(null, "X = "));
        // breaking infinite loop
        break;
    }
    // conversion unsuccessful
    catch (NumberFormatException nfe) {
        // TODO handle any error message if you need to
    }
}

答案 1 :(得分:0)

显然,您无法检查任何类型。但是,您可以尝试使用已知类型的解析器解析它,如果解析成功,则将其转换为该类型并继续。

例如,整数解析辅助函数是Integer.parseInt(String)。不幸的是,它会在失败时抛出一个异常(这将使你的代码在这一点上变得丑陋和缓慢)并且我不确定基础库中是否有其他选择(相当于,例如,C#' s {{1 }})。

答案 2 :(得分:0)

以下示例使用Class对象打印对象的类名:

void printClassName(Object obj) {
         System.out.println("The class of " + obj +
                            " is " + obj.getClass().getName());
     }

因此,此代码将执行您需要的检查:

do{
    VARIABLE =  JOptionPane.showInputDialog(null,"X = ").getClass().getName();

    }while(!(VARIABLE.equals("java.lang.Integer"));