Я получаю сообщение об ошибке в этой строке кода
arraySum [i][j] = array1 [i][j] + array2 [i][j];
и при вызове класса метода
int [][]sum = doTheMath(array1,array2, '+');
Моя проблема может заключаться в создании нового двойного массива с той же длиной, что и в параметре. Для строк я использую :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];
уже задает длину массива1.
Что касается вашего исключения, я считаю, вы хотите изменить эту строку
for (int j = 0; j < arraySum.length; j++)
в
for (int j = 0; j < arraySum[i].length; j++)