如果args[I]的类型不是Java中预期的类型,我如何返回错误消息?是否有“型式试验”功能?
这是一个类,在CMD提示符中输入字符串和整数,即“Hello”4,然后重复字符串4次。这不是一个问题,也可以工作,但是如果第二个参数(arg[1])不是正整数(args[1]>;0),或者它通常不是整数类型,我想返回一条错误消息(即“Invalid argument”)。我可以测试它是否为正整数,但我可以手工比较字符串数组的内容是否可解析为整数
public class Repeat {
public static void main(String[] args) {
System.out.println(parseAndRep(args));
}
public static String parseAndRep(String[] args){
if (args.length<2){
return"Error: insufficient arguments";
}
if (Integer.parseInt(args[1]<1) || **//TODO Work out if correct type**) {
return "Error: second argument not a valid positive integer";
}
int n = Integer.parseInt(args[1]);
String repeatstring = args[0];
while (n!=1){
repeatstring = repeatstring +" "+ args[0];
n= n-1;
}
return repeatstring;
}
# 1 楼答案
main()
方法的args
参数的类型始终为String[]
。您想要做的是而不是检查类型(这完全是另一种含义),但是您想要查看您拥有的String
实例是否可以解析为整数。为此,您可以始终检查字符串是否与仅接受数字的正则表达式匹配:# 2 楼答案
上述表达式验证数值,以防需要扩展以支持可能使用的小数
-?\\d+(\\.\\d+)?
# 3 楼答案
您可能会在以下语句的指定位置处遇到编译错误:
这是因为
args[1]
是一个字符串,不能将字符串与<
进行比较。你可能想做的是将
args[1]
解析为int后,再将其与值1
进行比较时,此语句将执行此操作。问题是,如果数字不是整数,这将引发NumberFormatException您可以使用StringUtils检查字符串是否为数字。isNumeric来自commons-lang库,它有一个非常好和高效的实现