Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 如何检查字符串是有效的int还是double_Java_String - Fatal编程技术网

Java 如何检查字符串是有效的int还是double

Java 如何检查字符串是有效的int还是double,java,string,Java,String,我试图确定用户的输入是否包含有效的int或double而不是有效的字符串。如果输入为int或double,则程序应说明make无效 这是我的密码: else if (tokens[0].equals("make")) { if (!tokens[2].equals(String)) System.out.println(" Invalid make"); // I have 5 spaces above because I don't know how to use printf

我试图确定用户的输入是否包含有效的int或double而不是有效的字符串。如果输入为int或double,则程序应说明make无效

这是我的密码:

else if (tokens[0].equals("make"))
{
  if (!tokens[2].equals(String)) System.out.println("     Invalid make");
  // I have 5 spaces above because I don't know how to use printf with strings
  searchByMake(tokens[2]);
}
编辑:抱歉搞混了,伙计们。。令牌[]是一个字符串数组

我试图让我的程序打印无效的Make,如果用户在number为tokens时输入Make=number[2]

您可以使用instanceof

您可以使用instanceof

还有双倍的


对于double也..

您可以编写一个函数来测试它,方法是调用并捕获

public static boolean isNumber(String str) {
    try {
        double v = Double.parseDouble(str);
        return true;
    } catch (NumberFormatException nfe) {
    }
    return false;
}
那么你可以这样称呼它

if (isNumber(tokens[2])) {
  System.out.println("     Invalid make");
}
带字符串的printf可能看起来像

String msg = "Invalid make";
System.out.printf("     %s%n", msg);

您可以编写一个函数来测试它,方法是调用并捕获

public static boolean isNumber(String str) {
    try {
        double v = Double.parseDouble(str);
        return true;
    } catch (NumberFormatException nfe) {
    }
    return false;
}
那么你可以这样称呼它

if (isNumber(tokens[2])) {
  System.out.println("     Invalid make");
}
带字符串的printf可能看起来像

String msg = "Invalid make";
System.out.printf("     %s%n", msg);


您是在尝试测试字符串是否等于一个特定的整数,还是任何一个整数?这很大程度上取决于你认为是一个int /双。1.2345678+E9符合条件吗?是吗。?是吗?FF01?任何整数。它不能等于一个数字,因为在我的程序中make是一个名称,而不是一个数字。请提供有关令牌数组的更多信息。它是一个字符串数组吗?您是在尝试测试字符串是否等于一个特定的整数,还是任何一个整数?这很大程度上取决于你认为是int /双。1.2345678+E9符合条件吗?是吗。?是吗?FF01?任何整数。它不能等于一个数字,因为在我的程序中make是一个名称,而不是一个数字。请提供有关令牌数组的更多信息。它是字符串数组吗?因为令牌是字符串数组。您的解决方案将永远无法工作。问题已更新为声明它是字符串数组。@RobbyCornelissen对于字符串数组,这将是多余的。我认为我们可能过早下结论。也许是因为缺乏经验p@harsh.prasad如果令牌绝对是字符串[],它实际上甚至不会编译。@harsh.prasad如果您错了,它不会编译。应用双精度实例是非法的。去试试看。不要让我引用JLS,因为令牌是一个字符串数组。您的解决方案将永远无法工作。问题已更新为声明它是字符串数组。@RobbyCornelissen对于字符串数组,这将是多余的。我认为我们可能过早下结论。也许是因为缺乏经验p@harsh.prasad如果令牌绝对是字符串[],它实际上甚至不会编译。@harsh.prasad如果您错了,它不会编译。应用双精度实例是非法的。去试试看。不要让我引用JLS。这个问题令人难以置信。正确答案被否决,错误答案被否决。先生,无论如何+1。@RobbyCornelissen我想人们只是在读标题。需要为null值添加第二个catch catch nullpointerexception e{}您还可以应用为该方法记录的正则表达式。这个问题令人难以置信。正确答案被否决,错误答案被否决。先生,无论如何+1。@RobbyCornelissen我想人们只是在阅读标题。需要为null值添加第二个catch catch nullpointerexception e{}您还可以应用为该方法记录的正则表达式。