Поэтому я помогаю репетитору по классу алгебры 2 в моей местной средней школе, и в настоящее время класс просматривает матрицы.Хотя не там, они в конечном итоге доберутся до умножения матриц.После прохождения курса компьютерных наук в прошлом году и изучения Java учитель, которому я помог, подумал, что мне следует попытаться написать программу для нескольких матриц.
В настоящий момент мне нужно определить числа для первого массива, который содержитинформация для первой матрицы.Однако у меня есть небольшая проблема.Как показано на этом рисунке:
строка, запрашивающая целые числа индекса, повторяется после уже записи целых чисел.Я предполагаю, что это из-за моего многослойного цикла, но я не могу быть наверняка.Обычно новые глаза видят проблемы яснее.Буду признателен всем, кто сможет мне помочь.
Код:
package matrixmultiplication;
import java.util.*;
public class MatrixMultiplication {
public static void main(String[] args) {
System.out.println("What is the size of the first matrix?");
int matrix1Rows = matrixRows();
int matrix1Columns = matrixColumns();
int[] matrix1 = new int[matrix1Rows * matrix1Columns];
doubleSpace();
System.out.println("What is the size of the second matrix?");
int matrix2Rows = matrixRows();
int matrix2Columns = matrixColumns();
int[] matrix2 = new int[matrix2Rows * matrix2Columns];
doubleSpace();
if (matrix1Columns != matrix2Rows){
System.out.println("These cannot be multiplied!");
System.exit(0);
} else {
matrix1Numbers(matrix1Rows, matrix1Columns);
}
}
public static int matrixRows(){
System.out.print("Rows:");
Scanner rowSc = new Scanner(System.in);
int rows = rowSc.nextInt();
return rows;
}
public static int matrixColumns(){
System.out.print("Columns:");
Scanner colSc = new Scanner(System.in);
int cols = colSc.nextInt();
return cols;
}
public static int[] matrix1Numbers(int rows, int cols){
int[] numb = new int[rows * cols];
for (int j = 0; j <= numb.length; j += rows){
for (int i = 1; i <= cols; i++){
for (int k = 1; k <= rows; k++){
System.out.println("What is the value for index (" + k + "," + i + ")?");
Scanner inp = new Scanner(System.in);
if (j + k <= numb.length){
numb[j + k - 1] = inp.nextInt();
}
}
}
}
for (int i = 0; i < numb.length; i++){
System.out.println(numb[i]);
}
return numb;
}
public static void doubleSpace(){
System.out.println();
System.out.println();
}
}
Я использую NetBeans 8.2 и последнюю рабочую версию Java для NetBeans.