Появляется ошибка 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;
			}

		}
	}
	}