根据用户输入确定对象类型

时间:2016-02-02 16:54:51

标签: java

您好我是java的新手,所以这可能是一个简单的解决方案,但我需要能够判断用户输入是字符串还是其他对象,这似乎不起作用:

public static void main(String[] args){
     Scanner sc = new Scanner(System.in);
     Object name;

     //have user enter their name 
     do{
        System.out.println("Please enter your name: ");
        name = sc.nextLine();

        if(name instanceof String){
            System.out.println(name);
            break;
        }else{
            System.out.println("Enter a String!");
            sc.next();
            }
    } while(true);

}

2 个答案:

答案 0 :(得分:0)

Scanner#nextLine() 始终会返回String。但是,如果要检查对象的类型,可以使用instanceof运算符或getClass()方法确定确切的类。

例如,someObject instanceof String只有在null且其类型为String时才会返回true。

如果要将String转换为另一种类型的对象(例如 - 数字),您应该阅读类型转换。例如,check this

答案 1 :(得分:0)

归功于AlexR(此处:Parse String into Number), 您总是可以尝试使用一系列if / then来查看String值是否可以转换为数字样式(int,long等等)

private static Number parse(String str) {
    Number number = null;
    try {
        number = Double.parseDouble(str);
    } catch(NumberFormatException e) {
        try {
            number = Float.parseFloat(str);
        } catch(NumberFormatException e1) {
            try {
                number = Long.parseLong(str);
            } catch(NumberFormatException e2) {
                try {
                    number = Integer.parseInt(str);
                } catch(NumberFormatException e3) {
                    throw e3;
                }       
            }       
        }       
    }
    return number;
}