Появляется ошибка Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at practice/practice.Practic2.main(Practic2.java:65). Если убрать for(подписан), ошибка пропадает. При его появлении, даже пустом, появляется.
Основной код.
public static void main(String[] args) {
// TODO Auto-generated method stub
int i, j = 0;
int indexI = 0, indexJ = 0;
double temp;
boolean isPresent = false, isPresentMin = false;
double Array[] [] = new double[3] [3];
Array[0][0] = 0;
Array[0][1] = 3;
Array[0][2] = 1;
Array[1][0] = 2;
Array[1][1] = 8;
Array[1][2] = 2;
Array[2][0] = 4;
Array[2][1] = -1;
Array[2][2] = 7;
Matrix.showArray(Array);
if (Array[0][0] != 1) {
for (i = 0; i < Array.length;i++) {
for (j = 0; j < Array.length; j++) {
if (1 == Array[i][j]) {
indexI = i;
indexJ = j;
isPresent = true;
break;
}}
if (isPresent == false) {
for (j = 0; j < Array.length; j++) {
if (-1 == Array[i][j]) {
indexI = i;
indexJ = j;
isPresent = true;
break;
}}
} else break;
}
System.out.println(indexI + " " + indexJ );
System.out.println("-----------");
i = 0; j = 0;
if (isPresent == true) {
for(j =0; i < Array.length; i++) {
if (Array[i][j] == 1 | Array[i][j] == -1) {
break;
}
if (i == Array.length -1) {
Matrix.transferCol(Array, indexI, indexJ);
break;
}
}
Matrix.showArray(Array);
if (Array[0][0] == 1 | Array[0][0] == -1) {
} else Matrix.transferRow(Array, indexI, indexJ);
indexI = 0; indexJ = 0; j = 0; i=2;
System.out.println("indexI = "+indexI+"indexJ = "+indexJ+"i = "+ i +"j = "+j);
for (i=1;i<=Array.length;i++) { //данный for вызывает ошибку
temp = Array[i][j]/Array[indexI][indexJ]; //65 строка
for(j = 0;j < Array.length;j++) {
Array[i][j] = Array[i][j] - temp * Array[indexI][j];
}}}
}Matrix.showArray(Array);
}
}
Класс Matrix
public class Matrix {
public static void transponArray(double Array[][]) { //Метод транспонирования матрицы
int i,j;
for (i =0; i < 3; i++) {
for (j =i+1; j< 3; j++) {
double temp = Array[i][j];
Array[i][j] = Array[j][i];
Array[j][i] = temp;
}
}
for (i = 0; i<3; i++) {
for (j = 0; j<3; j++) {
System.out.print(Array[i][j] + " ");
}
System.out.println();
}
}
public static void showArray(double Array[][]) { //метод показа матрицы
for (int i = 0; i < Array.length; i++) {
for (int j = 0; j < Array.length; j++) {
System.out.print(Array[i][j] + " ");
}
System.out.println();
}
System.out.println("-----------");
}
public static void transferCol(double Array[][], int indexI, int indexJ) { //метод переставления столбцов
int i = 0, j = 0;
double temp;
for (j = indexJ;i<Array.length;i++) {
temp = Array[i][0];
Array[i][0] = Array[i][j];
Array[i][j] = temp;
}
for (i=0;i<Array.length;i++) {
for(j=0;j<Array.length;j++) {
Array[i][j] = Array[i][j] * -1;
}
}}
public static void transferRow(double Array[][], int indexI, int indexJ) { //метод переставления строк
int i =0, j = 0;
double temp;
for (i = indexI;j<Array.length;j++) {
temp = Array[0][j];
Array[0][j] = Array[i][j];
Array[i][j] = temp;
}
for (i=0;i<Array.length;i++) {
for(j=0;j<Array.length;j++) {
Array[i][j] = Array[i][j] * -1;
}
}
}
}