java - 二维数组索引越界;创建与参数大小相同的新二维数组?

标签 java arrays methods bluej

我在这行代码上收到错误消息

arraySum [i][j] = array1 [i][j] + array2 [i][j];

以及调用方法类时

int [][]sum = doTheMath(array1,array2, '+');

我的问题可能是创建与参数中的长度相同的新 double 组。对于行,我使用 :6,对于列,我使用 :4

 public static int [][]doTheMath(int [][]array1, int [][]array2, char arithmetic)
{
    // Declares 2-dimensional array the same size as one in parameters
    int [][]arraySum = new int [array1.length][array1[0].length];

    for (int i = 0; i < arraySum.length; i++)
        arraySum[i] = new int [array1[i].length];

    // For loop to take each row and column to separately do arithmetic on
    for (int i = 0; i < arraySum.length; i++) {
        for (int j = 0; j < arraySum.length; j++) {
            if (arithmetic == '+') 
                arraySum [i][j] = array1 [i][j] + array2 [i][j];
            else if (arithmetic == '-') 
                arraySum [i][j] = array1 [i][j] - array2 [i][j]; 
            else if (arithmetic == '*') 
                arraySum [i][j] = array1 [i][j] * array2 [i][j];
            else if (arithmetic == '/') 
                arraySum [i][j] = array1 [i][j] / array2 [i][j];
            else if (arithmetic == '%')
                arraySum [i][j] = array1 [i][j] % array2 [i][j];
        }
    }

    // arraySum value is returned
    return arraySum;
}

数组 1 和数组 2 值来自此方法类。

public static int getSize(String args)
{
    // Scanner for keyboard input
    Scanner keyboard = new Scanner(System.in);

    // Declares input as integer
    int input = 0;

    // Will print rows or columns and take keyboard input
    System.out.print(args);
    input = keyboard.nextInt();

    // While loop to check if input is in between 2 and 6, if not will print error
    while (input < 2 || input > 6) {
        System.out.print(args);
        input = keyboard.nextInt();
        if (input < 2 || input > 6)
            System.out.println("The number your entered was not between 2 and 6.");
    }

    // Input value is returned
    return input;
}

最佳答案

这部分代码没有用

for (int i = 0; i < arraySum.length; i++)
    arraySum[i] = new int [array1[i].length];

如这一行

int [][]arraySum = new int [array1.length][array1[0].length];

已经设置了array1的长度。

至于你的异常(exception),我相信你想改变这一行

for (int j = 0; j < arraySum.length; j++)

for (int j = 0; j < arraySum[i].length; j++)

关于java - 二维数组索引越界;创建与参数大小相同的新二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29592371/

相关文章:

arrays - 如何获取静态数组的长度?

c++ - 如何让 for_each 使用模板?

java - 在一个类中将对象添加到链接列表的末尾

java - 在 AndroidManifest 中注册的 BroadcastReceiver 不工作

java - Spring Security XML 配置与 Java 配置

java - 造成程序执行延迟

java - 自定义TextInputLayout的错误背景颜色

javascript - CodeCamp 算法虚假保镖

Java:二叉树递归方法

Java - 类方法可以看到同类参数的私有(private)字段