如何检查String是有效的int还是double

时间:2014-11-07 02:26:38

标签: java string

我正在尝试确定用户的输入是否包含有效的intdouble而不是有效的String。如果输入为intdouble,则程序应说明"Invalid 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]);
}

编辑:抱歉让人感到困惑.."令牌[]"是一个字符串数组。

我正在尝试打印我的程序" Invalid Make"如果用户输入make = number (当数字tokens[2]时)

3 个答案:

答案 0 :(得分:5)

你可以编写一个函数来测试它,通过调用Double.parseDouble(String)并捕获NumberFormatException(这将处理doubleint值),当它不像< / p>

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可能看起来像,

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

答案 1 :(得分:0)

    public static boolean isInteger(String s) {
        try { 
            Integer.parseInt(s); 
        } catch(NumberFormatException e) { 
            return false; 
        }
        // only got here if we didn't return false
        return true;
    }

public static boolean isInteger(String s) {
    return isInteger(s);
}

和双倍..

答案 2 :(得分:-2)

您可以使用instanceof

if(tokens[2] instanceof String) ....
else if(tokens[2] instanceof Double) ....