Hello, when I run the following code I get the error Exception in thread "main" java.lang.StackOverflowError (Main.java:
59) and I don't know how to fix it.
public class Main{
public static int r = 0;
public static int n;
public static final int i = 4;
public static final int j = 4;
public static int x = 0;
public static int y = 0;
public static boolean simetrica = true;
public static int [][] m = new int[i][j];
public static int tmp = 0;
public static boolean simetricaSuRaizCuadradaEntera = true;
public static void main(String[] args) {
n = 10;
m[0][0]=1;
m[1][0]=10;
m[2][0]=25;
m[3][0]=5;
m[0][1]=9;
m[1][1]=1;
m[2][1]=64;
m[3][1]=2;
m[0][2]=25;
m[1][2]=64;
m[2][2]=1;
m[3][2]=4;
m[0][3]=5;
m[1][3]=2;
m[2][3]=4;
m[3][3]=50;
Main prueba = new Main();
prueba.raizCuadradaEntera(n);
System.out.println(r);
prueba.esSimetrica(m);
System.out.println(simetrica);
prueba.esSimetricaSuRaizCuadradaEntera(m);
System.out.println(simetricaSuRaizCuadradaEntera);
}
public int raizCuadradaEntera(int n){
if (n == 0){
return n;
}else{
if ( (n >= (r*r)) && (n < (r+1)*(r+1)) ){
return(r);
}else{
r++;
return(raizCuadradaEntera(n));
}
}
}
public boolean esSimetrica(int [][] m){
if (m.length != m[0].length){
return false;
}
if (x != m.length - 1){
if (y == m[x].length - 1){
if (m[x][y] != m[y][x]){
simetrica = false;
}
x++;
y = 0;
esSimetrica(m);
}else{
if (m[x][y] != m[y][x]){
simetrica = false;
}else{
y++;
esSimetrica(m);
}
}
}
return simetrica;
}
public boolean esSimetricaSuRaizCuadradaEntera(int[][] m){
calcularRaices(m);
esSimetrica(m);
simetricaSuRaizCuadradaEntera = simetrica;
return simetricaSuRaizCuadradaEntera;
}
private int[][] calcularRaices(int [][] m){
if (x != m.length - 1){
if (y == m[x].length - 1){
n = m[x][y];
m[x][y] = raizCuadradaEntera(n);
x++;
y = 0;
calcularRaices(m);
}else{
n = m[x][y];
m[x][y] = raizCuadradaEntera(n);
y++;
calcularRaices(m);
}
}
return m;
}
}
3
false
Exception in thread "main" java.lang.StackOverflowError
at ....(Main.java:59)
Thanks for any suggestions