How to print error when input is not int
本问题已经有最佳答案,请猛点这里访问。
到目前为止,我已经知道了,我试图在Java中使用命令行。当输入不是int时,我想打印一个错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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方法
1 2 3 4 5 6 7 8 | public static boolean isInteger(String s) { try { Integer.parseInt(s); } catch(NumberFormatException e) { return false; } return true; } |
号
所以这里不应该有问题。
伊迪丝2:这是我犯的错误
1 2 3 4 5 6 | 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) |
欢迎使用堆栈溢出。可以从堆栈跟踪中读取问题。这就是你所拥有的。
1 2 3 4 |
注意,"EDOCX1"〔1〕后面没有"EDOCX1"〔0〕,因此即使args[i]不是整数,也会尝试重新计算"EDOCX1"〔2〕的值。
我希望你能用这个提示来解决这个问题。
这是正常的,假设args[i]等于"somestring",那么当调用
之后,当您调用
要处理这个问题,您只需添加一个类似于khanna111答案中建议的其他块,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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); } |
号
或者,您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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); } |