Java 输入不为int时如何打印错误
到目前为止,我已经知道了这一点,我正在尝试使用java中的命令行。我想在输入不是int时打印一个错误Java 输入不为int时如何打印错误,java,Java,到目前为止,我已经知道了这一点,我正在尝试使用java中的命令行。我想在输入不是int时打印一个错误 private static void add(String[] args) { if (args.length == 1) { System.out.print("Error: Argument count mismatch"); } int num = 0; for (int i = 1;i < args.length;i++) { if (isInt
private static void add(String[] args) {
if (args.length == 1) {
System.out.print("Error: Argument count mismatch");
}
int num = 0;
for (int i = 1;i < args.length;i++) {
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
}
int a = Integer.parseInt(args[i]);
num += a;
}
System.out.println(num);
}
所以这里应该没有问题
编辑2:这是我得到的错误
java.lang.NumberFormatException: For input string: "a"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at MyCLIParser.add(MyCLIParser.java:46)
at MyCLIParser.main(MyCLIParser.java:10)
欢迎来到堆栈溢出。可以从堆栈跟踪中读取问题。这就是你所拥有的
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
}
int a = Integer.parseInt(args[i]);
请注意,“if
”后面没有“else
”,因此即使args[i]不是整数,也会尝试再次计算“a
”的值
我希望你能用这个提示来解决这个问题。这很正常,假设你的args[I]等于“someString”,那么当你调用
isInteger()
函数时,它将返回false。然后,当你说isInteger(args[i])==false
这意味着false==false
,即true
。以及System.out.print(“错误:参数类型不匹配”)代码>将正确执行
之后,当调用inta=Integer.parseInt(args[i])
如果不捕获NumberFormatException
您的应用程序会因该异常错误而崩溃,这是正常的
要处理这个问题,您只需添加一个else块,如Khanna111的答案中所建议的,如下所示:
private static void add(String[] args) {
if (args.length == 1) {
System.out.print("Error: Argument count mismatch");
}
int num = 0;
for (int i = 1;i < args.length;i++) {
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
}
else {
int a = Integer.parseInt(args[i]);
num += a;
}
}
System.out.println(num);
}
你的isInteger()看起来像什么?您在日志中得到的错误是什么?正如@ChrisS所说,提供错误的堆栈跟踪,并尝试包括您的isInteger方法添加了我的isInteger方法。它只是崩溃了,稍后会出现错误代码对不起,这是我得到的错误java.lang.NumberFormatException:对于输入字符串:java.lang.NumberFormatException.forInputString(未知源)在java.lang.Integer.parseInt(未知源)在java.lang.Integer.parseInt(未知源)在MyCLIParser.add(MyCLIParser.java:46)在MyCLIParser.main(MyCLIParser.java:10)@Schuld,请将它添加到您的问题中,这样您的问题会更清楚,以后人们可能会从中受益;)@汤姆:是的,我现在旅行的时候脑子里乱七八糟的,谢谢你的建议
private static void add(String[] args) {
if (args.length == 1) {
System.out.print("Error: Argument count mismatch");
}
int num = 0;
for (int i = 1;i < args.length;i++) {
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
}
else {
int a = Integer.parseInt(args[i]);
num += a;
}
}
System.out.println(num);
}
private static void add(String[] args) {
if (args.length == 1) {
System.out.print("Error: Argument count mismatch");
}
int num = 0;
for (int i = 1;i < args.length;i++) {
if (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
continue;
}
int a = Integer.parseInt(args[i]);
num += a;
}
System.out.println(num);
}