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

到目前为止,我已经知道了这一点,我正在尝试使用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);
}
所以这里应该没有问题

编辑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);
}