我正在尝试确定用户的输入是否包含有效的int
或double
而不是有效的String
。如果输入为int
或double
,则程序应说明"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]
时)
答案 0 :(得分:5)
你可以编写一个函数来测试它,通过调用Double.parseDouble(String)
并捕获NumberFormatException
(这将处理double
和int
值),当它不像< / 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) ....