![]() |
Ayuda sopa de letras Hola, tengo un porblema con una sopa de letras, no se si alguien me podría ayudar a resolverlo, este es mi codigo, pero no funciona nada bien. A ver si alguien me puede ayudar a encontrar el problema. import java.io.*; import java.util.*; import acm.program.ConsoleProgram; public class ProyectoFinal extends ConsoleProgram { private final int row = 30; private final int col = 30; public static String palabrota=""; public static String posicion =""; public static int k = 0; public static void main(String[] args) { new ProyectoFinal().start(); } public void run() { // declarando el manejador de archivos Scanner filelector = null; char[][] mat = new char[row][col]; // abriendo el archivo y validando que exista... si no existe lanza una excepción try { filelector = new Scanner(new FileReader("Entrada.dat")); filelector.useDelimiter("[\t\n\r]+"); rellenaMatriz(filelector, mat); filelector.close(); } catch (IOException a) { System.out.println (" No existe ese archivo "); System.exit(1); } // imprime la matriz que fue copiada del archivo de entrada for (int i = 0; i < mat.length; i++) { for (int j = 0; j < mat[0].length; j++) this.print(mat[i][j]); this.println(); } // aqui deberas colocar la llamada al metodo de buscaPalabra while(true) { this.println("Dime una palabra para buscar"); palabrota = this.readLine(); buscaPalabra(mat,palabrota.toCharArray()); if(palabrota == "sayonara") break; } } // metodo que rellena la matriz con los caracteres que se leen de un archivo public static<T> void rellenaMatriz(Scanner lector1, char[][] mat) { int i = 0; String str; while(lector1.hasNext()) { str = lector1.next(); for (int j= 0; j < str.length(); j++) mat[i][j] = str.charAt(j); i++; } } /*metodo que busca la palabra (aki se validan los metodos hor, horR, ver, verR diagonales ambos lados y en reversa*/ //hacer metodo por metodo por separado public void buscaPalabra(char[][] mat, char[] pal) { int k; //metodo horizontal for (int i = 0; i >= 0 && i < 29; i++) for (int j = 0; j < mat[i].length; j++) { if(mat[i][j] == pal[k]) k = 0; } for (k = 1; k < pal.length; k++) { if(mat[i][++j] != pal[k]) break; this.println("La palabra " + palabrota + " esta en la posicion: " + i + "," + j + " de forma horizontal"); } int k; int i; int j; String palok; //metoodo horizontal for (i = 0; i < mat.length; i++) { k = 0; palok = ""; for(j = 0; j < mat[i].length; j++) { if(mat[i][j] == pal[k]) for(k = 1; k < pal.length; k++) { palok += mat[i][j]; this.println("La palabra " + palabrota + " esta en la posicion: " + i + "," + j + " de forma horizontal" + "\n"); } else { k = 0; palok = ""; } } } } } //metodo horizontal r for (int i = 29; i >= 0 && i < 29; i++) for (int j = 29; j < mat[i].length; j++) if(mat[i][j] == pal[k]) for (k = 1; k < pal.length; k++) { if(mat[i][++j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma horizontal reversa"); k = 0; } //metodo vertical for (int i = 0; i >= 0 && i < 29; i++) for (int j = 0; j < mat[i].length; j++) if(mat[i][j] == pal[k]) for (k = 1; k < pal.length; k++) { if(mat[++i][j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma vertical"); k = 0; } //metodo vertical r for (int i = 29; i >= 0 && i < 29; i++) for (int j = 29; j < mat[i].length; j++) if(mat[i][j] == pal[k]) for (k = 1; k < pal.length; k++) { if(mat[--i][j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma vertical reversa"); k = 0; } //metodo diagonal derecha for (int i = 0; i >= 0 && i < 29; i++) for (int j = 0; j < mat[i].length; j++) if(mat[i][j] == pal[k]) for (k = 1; k < pal.length; k++) { if(mat[++i][++j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma diagonal derecha"); k = 0; //metodo diagonal derecha reversa if(mat[--i][--j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma diagonal derecha reversa"); k = 0; //metodo diagonal izquierda if(mat[--i][++j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma diagonal izquierda"); k = 0; //metodo diagonal izquierda reversa if(mat[++i][--j] != pal[k]) break; posicion = ("La palabra " + pal + " esta en la posicion: " + i + "," + j + " de forma horizontal"); k = 0; |
¿ pero te compila ? ¿ Y si no te compila , que errores te dá ? --- a parte de que no está terminado el código ,termina con k=0; .... ¿? |
| La zona horaria es GMT -6. Ahora son las 00:47. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.