【发布时间】:2015-04-26 16:30:03
【问题描述】:
到目前为止,我已经掌握了这个,我正在尝试在 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 (isInteger(args[i]) == false) {
System.out.print("Error: Argument type mismatch");
}
int a = Integer.parseInt(args[i]);
num += a;
}
System.out.println(num);
}
如果输入不是 int,第二个 if 语句是我想打印错误的部分,我有一个 isInteger 方法。但我的程序反而崩溃或打印错误。
编辑:这是我的 isInteger 方法
public static boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
}
return true;
}
所以这里应该没有问题。
edit2:这是我得到的错误
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)
【问题讨论】:
-
你的 isInteger() 是什么样的?您在日志中遇到的错误是什么?
-
正如@ChrisS 所说,提供错误的堆栈跟踪,并尝试包含您的 isInteger 方法
-
在其中添加了我的 isInteger 方法。它只是崩溃,稍后会提出错误代码
-
对不起,这是我得到的错误 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)
-
@Schuld 请将其添加到您的问题中,以便您的问题更清楚,以后人们可能会从中受益;)
标签: java