Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取输入,然后转换为适当的数据类型—Java_Java - Fatal编程技术网

获取输入,然后转换为适当的数据类型—Java

获取输入,然后转换为适当的数据类型—Java,java,Java,我试图创建一个方法,从用户获取任何数据类型的输入,然后将该输入转换为变量类型。但是我的代码总是返回字符串类型。需要修理吗 Scanner x = new Scanner(System.in); Object a = x.next(); 下面是我检测对象类型的方法 public static String inputValidator(Object input) { if(input.getClass().getName().equals("java.lang.String"))

我试图创建一个方法,从用户获取任何数据类型的输入,然后将该输入转换为变量类型。但是我的代码总是返回字符串类型。需要修理吗

Scanner x = new Scanner(System.in);
Object a = x.next();
下面是我检测对象类型的方法

public static String inputValidator(Object input)
{
    if(input.getClass().getName().equals("java.lang.String"))
    {
        return "string";
    }
    else if(input.getClass().getName().equals("java.lang.Integer"))
    {
        return "integer";
    }
    return "nor";


}

这不是一种正确的方法,因为它返回一个
字符串
。如果您正在寻找原语或一些“基本”类型,那么可以使用适当的方法,如或

也就是说,使用当前的实现,您将永远无法访问检查
整数的
else if

如果您对数字最感兴趣,请检查以下内容:

让我们只说字符串、int和double

如果性能不是一个很大的问题,并且您正在寻找一个简单的解决方案,那么我建议您选择:

if (isInteger(string)) {
    // is an integer
} else if (isDouble(string)) {
    // is a double 
} else {
    // is a string
}

public static boolean isDouble(String string) {
    try {
        double d = Double.parseDouble(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

public static boolean isInteger(String string) {
    try {
        double d = Integer.parseInt(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

注意:这里的调用顺序很重要,您必须在isDouble()之前调用isInteger(),因为整数字符串也是双字符串。

这不是正确的方法,因为返回的是
字符串。如果您正在寻找原语或一些“基本”类型,那么可以使用适当的方法,如或

也就是说,使用当前的实现,您将永远无法访问检查
整数的
else if

如果您对数字最感兴趣,请检查以下内容:

让我们只说字符串、int和double

如果性能不是一个很大的问题,并且您正在寻找一个简单的解决方案,那么我建议您选择:

if (isInteger(string)) {
    // is an integer
} else if (isDouble(string)) {
    // is a double 
} else {
    // is a string
}

public static boolean isDouble(String string) {
    try {
        double d = Double.parseDouble(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

public static boolean isInteger(String string) {
    try {
        double d = Integer.parseInt(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

注意:这里的调用顺序很重要,您必须在isDouble()之前调用isInteger(),因为整数字符串也是双字符串。

这不是正确的方法,因为返回的是
字符串。如果您正在寻找原语或一些“基本”类型,那么可以使用适当的方法,如或

也就是说,使用当前的实现,您将永远无法访问检查
整数的
else if

如果您对数字最感兴趣,请检查以下内容:

让我们只说字符串、int和double

如果性能不是一个很大的问题,并且您正在寻找一个简单的解决方案,那么我建议您选择:

if (isInteger(string)) {
    // is an integer
} else if (isDouble(string)) {
    // is a double 
} else {
    // is a string
}

public static boolean isDouble(String string) {
    try {
        double d = Double.parseDouble(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

public static boolean isInteger(String string) {
    try {
        double d = Integer.parseInt(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

注意:这里的调用顺序很重要,您必须在isDouble()之前调用isInteger(),因为整数字符串也是双字符串。

这不是正确的方法,因为返回的是
字符串。如果您正在寻找原语或一些“基本”类型,那么可以使用适当的方法,如或

也就是说,使用当前的实现,您将永远无法访问检查
整数的
else if

如果您对数字最感兴趣,请检查以下内容:

让我们只说字符串、int和double

如果性能不是一个很大的问题,并且您正在寻找一个简单的解决方案,那么我建议您选择:

if (isInteger(string)) {
    // is an integer
} else if (isDouble(string)) {
    // is a double 
} else {
    // is a string
}

public static boolean isDouble(String string) {
    try {
        double d = Double.parseDouble(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

public static boolean isInteger(String string) {
    try {
        double d = Integer.parseInt(string);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}


注意:这里的调用顺序很重要,您必须在isDouble()之前调用isInteger(),因为整数字符串也是双字符串。

字节可以解释为任何内容。返回一个
字符串
。Java是强类型的,而不是duck类型的。这不起作用。好的,那么我的代码的哪一部分需要更改?我猜是接受输入。我应该写些什么呢?你能举个例子说明你希望这是如何实现的吗?什么输入需要什么输出?我试图从用户那里获取“任何”输入,它将被分配为对象并检测类类型。字节可以被解释为任何内容。返回一个
字符串
。Java是强类型的,而不是duck类型的。这不起作用。好的,那么我的代码的哪一部分需要更改?我猜是接受输入。我应该写些什么呢?你能举个例子说明你希望这是如何实现的吗?什么输入需要什么输出?我试图从用户那里获取“任何”输入,它将被分配为对象并检测类类型。字节可以被解释为任何内容。返回一个
字符串
。Java是强类型的,而不是duck类型的。这不起作用。好的,那么我的代码的哪一部分需要更改?我猜是接受输入。我应该写些什么呢?你能举个例子说明你希望这是如何实现的吗?什么输入需要什么输出?我试图从用户那里获取“任何”输入,它将被分配为对象并检测类类型。字节可以被解释为任何内容。返回一个
字符串
。Java是强类型的,而不是duck类型的。这不起作用。好的,那么我的代码的哪一部分需要更改?我猜是接受输入。我应该写些什么呢?你能举个例子说明你希望这是如何实现的吗?什么输入需要什么输出?我试图从用户那里获取输入“任何东西”,它将被指定为对象并检测类类型。你想实现什么?也许@Barett提到的另一个问题会有所帮助?请看我的最新帖子,“我正试图从用户那里获取输入‘任何东西’,它将被分配为对象,并将检测类类型”@Munna,正如我前面提到的,你得到的只是一个
字符串
。你打算能够识别整数、双精度、布尔值、日期等吗。。?我想说的是,你必须定义一个你想要检查的类型列表。我希望能够准确地识别。我怎样才能做到这一点?@Munna你能提供一个你想要解析的类型的完整列表吗?你想实现什么?也许@Barett提到的另一个问题会有所帮助?请看我的最新帖子,“我正试图从用户那里获取输入‘任何东西’,它将被分配为对象,并将检测类类型”@Munna,正如我前面提到的,你得到的只是一个
字符串
。你打算能够识别整数、双精度、布尔值、日期等吗。。?我想说的是,你必须定义一个你想要检查的类型列表。我希望能够准确地识别。我怎样才能做到这一点?@Munna你能提供吗