Java 将 String 转换为 Int 时产生错误

标签 java

使用以下代码将 String 转换为 int 时,出现错误

Exception in thread "main" java.lang.NumberFormatException: For input string: "null1"

这是代码(好吧,发生错误的行):

int numbProgram=
  Math.abs(Integer.parseInt(standardProgramResult) - output[0])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[1])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[2])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[3])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[4])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[5])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[6])
  + Math.abs(Integer.parseInt(standardProgramResult) - output[7]);

那么null1是什么意思?难道这不应该只意味着 1,因为 null 没有任何意义吗?另外,我该如何解决这个问题?

谢谢

最佳答案

首先,您只能解析一次并使用循环:

int programResult = Integer.parseInt(standardProgramResult);
int numbProgram=0;
for (int output: output){
  numProgram += Math.abs(programResult - output)
}

也就是说,standardProgramResult 不包含整数值,无法解析。异常(exception)情况表明了这一点。

在您的代码中的某个地方可能有类似的内容:

standardProgramResult = someVar1 + someVar2;

并且someVar1“null”

为了更好地理解和处理这种使用异常:

int programResult = 0;
try {
    programResult = Integer.parseInt(standardProgramResult);
} catch (NumberFormatException e) {
    System.err.println("programResult was not a number: " + programResult);
    // possibly ignore error, or terminate...
    // e.printStackTrace(); // prints the stack trace
    // throw e; // throws the error for someone else to handle
    // System.exit(1); // terminate indicating an error in execution
}
int numbProgram=0;
for (int output: output){
    numProgram += Math.abs(programResult - output)
}

关于Java 将 String 转换为 Int 时产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082622/

相关文章:

java - 如何避免静态资源请求被路由到拦截器?

java - 开放API 3.0.1只读注解

java - 光滑 - 填充矩形

java - 为什么ExecutorService接口(interface)没有实现AutoCloseable?

java - 为什么每次都要连续两次要求用户输入?

java - 如何在Windows启动时独立于系统启动java应用程序

java - 四舍五入到最接近的千分之一

java - 大查询 API 异常

java - 如何使用 if/else 语句表示 boolean 表达式?这是正确的吗?

java - 如何高效更新表的列值?