0 votos
por (120 puntos) en Java
Buenas y ante todo gracias a todos, mi duda es que en el metodo "Encriptar" no me entra al "if", y compruebo las variables String "cadenaAbecedario" y "cadenaFrase" y contienen los datos correctos pero no se por que no entra en la conficion "if", y si la comento, me ejecuta el codigo que contiene if, y le mete al array "resultado", la ultima posición "44" del "ArrayAbecedario", concatena fila y columna.

<pre lang='java'>
import java.util.Scanner;

public class polybios1 {

    private static final String LeerMatriz = null;
    static String Frase = "";
    static String ArrayAbecedario[][]={
             {"a","b","c","d","e"},
             {"f","g","h","i","k"},
             {"l","m","n","o","p"},
             {"q","r","s","t","u"},
             {"v","w","x","y","z"}
                };

    public static void main(String[] args) {

    //Solicitamos frase para cifrar
    solicitaFrase();
    String FraseParaCifrar[];
    FraseParaCifrar = new String [Frase.length()];
    RellenaMatriz(FraseParaCifrar, Frase);
    MostrarFraseParaCifrar(FraseParaCifrar);
    Encriptar(FraseParaCifrar, ArrayAbecedario);
    }

    private static void Encriptar(String[] fraseParaCifrar, String[][] ArrayAbecedario) {

        String resultado[];
        for (int o = 0;o < fraseParaCifrar.length; o++){

            System.out.print(fraseParaCifrar[o]+"-");
        }
        resultado = new String [fraseParaCifrar.length];
        int fila = 0;
        int columna = 0;
        for (fila = 0; fila <= 4; fila++){
            for (columna = 0; columna <= 4; columna++){
                //System.out.print(ArrayAbecedario[fila][columna]);
                String cadenaAbecedario = "";
                cadenaAbecedario = ArrayAbecedario[fila][columna];

                for (int o = 0;o < fraseParaCifrar.length; o++){
                    //System.out.println(fila+""+columna);
                    //System.out.println(fraseParaCifrar[1]);
                String cadenaFrase = fraseParaCifrar[o];
                System.out.println(fraseParaCifrar[0]);
                if (cadenaAbecedario == cadenaFrase){
                    //System.out.println(fila+""+columna);
                    String filaString= String.valueOf(fila);
                    String columnaString= String.valueOf(columna);
                    String posicion = "";
                    posicion = filaString + columnaString;
                    resultado[o]= posicion;

                }
                }
            }}
            for(int y = 0; y < resultado.length;y++){
                System.out.print(resultado[y]+"-");
                //resultado[y] = resultado[y] *19*58*86*74 ;
                //System.out.print(resultado[y]+",");
            }
            }

    private static void MostrarFraseParaCifrar(String[] fraseParaCifrar) {
    for (int i = 0; i < Frase.length();i++ ){
        //System.out.print(fraseParaCifrar[i]);
}

    }

    private static void RellenaMatriz(String[] fraseParaCifrar, String frase) {
for (int i = 0; i < frase.length();i++ ){

            char letraChar = frase.charAt(i);
            String letraString = Character.toString(letraChar);
            fraseParaCifrar[i] = letraString;
}
    }

    private static void solicitaFrase() {
        Scanner sc = new Scanner(System.in);
        System.out.println("Introduce frase para cifrar solo letras: ");
        Frase = sc.nextLine();

    }

}

3 Respuestas

0 votos
por (120 puntos)
RESUELTO

Pongo el codigo que tenia erroneo, correjido.


private static void Encriptar(String[] fraseParaCifrar, String[][] ArrayAbecedario) {
        String resultado[];
        for (int o = 0;o < fraseParaCifrar.length; o++){
            //System.out.print(fraseParaCifrar[o]+"-");
        }
        resultado = new String [fraseParaCifrar.length];
        int fila = 0;
        int columna = 0;
        for (fila = 0; fila <= 4; fila++){
            for (columna = 0; columna <= 4; columna++)
                //System.out.print(ArrayAbecedario[fila][columna]);
                for (int o = 0;o < fraseParaCifrar.length; o++)
                    //System.out.println(fila+""+columna);
                    //System.out.println(fraseParaCifrar[1]);
                //System.out.println(fraseParaCifrar[0]);
                //System.out.println(cadenaAbecedario + " " + cadenaFrase);
                if (fraseParaCifrar[o].equals(ArrayAbecedario[fila][columna])){
                    //System.out.println("es igual");
                    //System.out.println(fila+""+columna);
                    String filaString= String.valueOf(fila);
                    String columnaString= String.valueOf(columna);
                    String posicion = "";
                    posicion = filaString + columnaString;
                    resultado[o]= posicion;
                }
                }
            }}

0 votos
por (3.5k puntos)
@lopera607,

Muchas gracias por compartir la resolución con nosotros.


0 votos
por (120 puntos)
Buenas proporciono todo el codigo con sus comentarios:

- Codificador.

- Decodificador.

<code>

public class polybios1 {

    private static final String LeerMatriz = null;

    static String Frase = "";

    static String ArrayAbecedario[][]={

             {"a","b","c","d","e"},

             {"f","g","h","i","k"},

             {"l","m","n","o","p"},

             {"q","r","s","t","u"},

             {"v","w","x","y","z"}

                };

    public static void main(String[] args) {

    //Solicitamos frase para cifrar

    solicitaFrase();

    //Creo un array con la longitud de la frase o palabra introducida

    String FraseParaCifrar[];

    FraseParaCifrar = new String [Frase.length()];

    //Relleno el array de FraseParaCifrar con la Frase introducida

    RellenaMatriz(FraseParaCifrar, Frase);

    //Esto es una prueba para comprobar que el array contiene la frase

    MostrarFraseParaCifrar(FraseParaCifrar);

    //Este metodo compara el array de abecedario y el de la Frase introducida

    //y da como resultado la posicion de la letra en el arrayAbecedario

    Encriptar(FraseParaCifrar, ArrayAbecedario);

    }

    private static void Encriptar(String[] fraseParaCifrar, String[][] ArrayAbecedario) {

        //Creo una variable que es la que almacena las posiciones

        String resultado[];

        resultado = new String [fraseParaCifrar.length];

        //creo dos variables aqui para poder utilizarlas en los 3 for

        int fila = 0;

        int columna = 0;

        //Recorro fila y columna con estos dos bucles del ArrayAbecedario

        for (fila = 0; fila <= 4; fila++){

            for (columna = 0; columna <= 4; columna++){

                //Recorro el array fraseParaCifrar

                for (int o = 0;o < fraseParaCifrar.length; o++){

                //Compruebo si son iguales

                if (fraseParaCifrar[o].equals(ArrayAbecedario[fila][columna])){

                //si son iguales pues me guarda en array Resultado las posiciones

                    String filaString= String.valueOf(fila);

                    String columnaString= String.valueOf(columna);

                    String posicion = "";

                    posicion = filaString + columnaString;

                    resultado[o]= posicion;

                }

                    }

                        }

                            }

    //mostrando resultado

    for(int y = 0; y < resultado.length;y++){

                System.out.print(resultado[y]);

                                                    }

                            }

    private static void MostrarFraseParaCifrar(String[] fraseParaCifrar) {

    //Esto es una prueba para comprobar el contenido del Array fraseParaCifrar

    for (int i = 0; i < Frase.length();i++ ){

    //System.out.println(fraseParaCifrar[i]);

                                            }

                                                                            }

    private static void RellenaMatriz(String[] fraseParaCifrar, String frase) {

        //Recorro la frase introducida letra por letra y voy introduciendola

        //en el array fraseParaCifrar

        for (int i = 0; i < frase.length();i++ ){

            char letraChar = frase.charAt(i);

            String letraString = Character.toString(letraChar);

            fraseParaCifrar[i] = letraString;

                                        }

                                                                                }

    private static void solicitaFrase() {

        //Solicito al usuario que introduzca la frase para codificarla

        Scanner sc = new Scanner(System.in);

        System.out.println("Introduce frase para cifrar solo letras y que no tengan espacios: ");

        Frase = sc.nextLine();

                                        }

}

</code>

_______________________________________________________________________________________

<code>

public class Polybios_decodificador {

    static String ArrayAbecedario[][]={

        {"a","b","c","d","e"},

        {"f","g","h","i","k"},

        {"l","m","n","o","p"},

        {"q","r","s","t","u"},

        {"v","w","x","y","z"}

           };

    static String codificado = "12232000022321230432330032432301130422433334";

    public static void main(String[] args) {

        // Sacar el contenido del ArrayAbecedario con las posiciones que nos proporciona

        //la variable codificado

        //Creo dos variables para luego introducirlas como posiciones en el ArrayAbecedario

        int uno = 0;

        int dos = 0;

        //Recorro todas las letras de la variable codificado

        for (int i = 0;i < codificado.length();i++){

            //Si es par la posicion en la variable se guarda como entero en la variable uno

            if (i%2 == 0){

                char letraPar = codificado.charAt(i);

                char c = letraPar;

                uno = c - 48;//48 es el 0 en ASCII

            }

            //Y si no es par, es impar la posicion pues lo mete el valor en dos

            else {

                char letraImpar = codificado.charAt(i);

                char c = letraImpar;

                dos = c - 48;//48 es el 0 en ASCII

            //Solo muestro cuando llegamos a una posicion de la variable impar

            System.out.print(ArrayAbecedario[uno][dos]);

            }

        }

        }

}

</code>


Preguntas relacionadas

0 votos
1 respuesta
+1 voto
1 respuesta
0 votos
0 respuestas
preguntado por atag102 (20 puntos) Ene 4, 2017 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...