java - 我的程序抛出 java.lang.ArrayIndexOutOfBoundsException

标签 java arrays

我的代码中有错误,我似乎找不到解决方案,请问有人可以调试我的代码吗?

import java.util.* ; 

  public class Calculator {
    public static void main(String[] args) {   

    Scanner s = new Scanner(System.in);
    System.out.print("Enter the first number:");
    String a = s.nextLine(); 
    System.out.print("Enter the second number:");
    String b = s.nextLine();   

    int[] num1 = new int[a.length()];
    int[] num2 = new int[b.length()];

    for (int i=0;i<a.length();i++) {
      num1[i] = (int) a.charAt(i);
      num2[i] = (int) b.charAt(i);
    }

    int[] sum = new int[a.length()];

    for (int i = a.length() - 1; i >= 0; i--){
      if (num1[i] + num2[i] >= 10){
        sum[i] = (num1[i]+num2[i]) - 10;
        **sum[i-1] = 1;**
      } else {
          sum[i] = num1[i] + num2[i];   
      }
    }

    for (int i = 0; i < a.length(); i++) {
      System.out.print(sum[i]+" ");
    }  

  }
}

最佳答案

a.length()可能不等于 b.length()

有问题的代码

int[] num1 = new int[a.length()];
int[] num2 = new int[b.length()];

for (int i=0;i<a.length();i++) {
  num1[i] = (int) a.charAt(i);
  num2[i] = (int) b.charAt(i);
}

例如:考虑 a.length() 的情况=10b.length() =2

更多有问题的代码:

for (int i = a.length() - 1; i >= 0; i--){
  if (num1[i] + num2[i] >= 10){
    sum[i] = (num1[i]+num2[i]) - 10;
    **sum[i-1] = 1;**
  } else {
      sum[i] = num1[i] + num2[i];   
  }
}

关于java - 我的程序抛出 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644239/

相关文章:

java - Encog/neuroph 保存神经网络

Java:将 HashMap 添加到 Talend 的 ArrayList

javascript - 使用 JavaScript 从网格数组中删除列

javascript - 根据条件从数组中删除对象数组

java - 将颜色添加到颜色数组

c++ - 复制到 vector<unsigned char> 中的无类型对象的内容

java - 将查看寻呼机详细信息转换为 json 时出错

java - 使用循环查找均值和标准差

java - 根据 EditText 值更改 SeekBar 进度

C++ 巨大的整数数组存储为长整数