Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kradin

[Resolvido] Classe Cod

Recommended Posts

Fiz uma classe onde você insere uma menssagem e ele devolve um sequencia de numeros que você pode usar na mesma classe para descobrir o que ela significa. Queria a opinião de vocês, se está bom, ruim, melhorias, etc..

 

public class Cod {

    public String text_cod;
    private String key[][];
    private static final String characters[] = {"A","B","C","D","E",
                                "F","G","H","I","J",
                                "K","L","M","N","O",
                                "P","Q","R","S","T",
                                "U","V","X","W","Y","Z",
                                " ",".","-","!","?",",","Ô","Í",
                                "É","Á","Ã","\"","Ç","Ê","(",")",":","\n"};
    public Cod(){
       text_cod = "";
       CreateKey(0);
    }

    public Cod(int num){
        text_cod = "";
        CreateKey(num);
    }

    public String NumKey(){
        return (key[1].length + "" + key.length);
    }



    public void codificar(String charc){

        int point=1;

        text_cod = NumKey();
        try {
            while((charc.substring(point-1,point)) != null){
                if(Character.isDigit(charc.charAt(point-1))){
                    text_cod = text_cod + "99" + (charc.substring(point-1, point));
                }else{
                    text_cod = text_cod + searchChar((charc.substring(point-1, point)));
                }
                point++;
            }
        } catch (Exception e) {}

    }

    public void decodificar(String charc){
        int point=3;
        String decod = "";
       CreateKey(Integer.parseInt(charc.substring(0, 2)));
        try {
            while((charc.substring(point-1, point+1)) != null){
                int number = Integer.parseInt(charc.substring(point-1, point+1));
                if(number == 99){
                    decod = decod + charc.substring(point+1, point+2);
                    point += 1;
                }else{
                    int f = number/10;
                    int s = number-f*10;
                    decod = decod + key[f][s];
                }
                point += 2;
            }
        } catch (Exception e) {}
        text_cod = decod;
    }




    private String searchChar(String ch){
        int fx,fy;

        for(fx = 0; fx < key.length; fx++){
            for(fy = 0; fy < key[fx].length; fy++){
                String t = key[fx][fy];
                if(key[fx][fy].compareToIgnoreCase(ch) == 0){
                    return fx+""+fy;
                }
            }
        }
        return null;
    }

    private int[] Cordenat(int num){
        int y = num/10;
        int x = num-y*10;
        if((x*y < characters.length) || (num > 99)){
            return Cordenat(11 + (int)(Math.random() * 88));
        }
        int cord[] = {x,y};
        return cord;
    }

    private void CreateKey(int num){

        int table[] = Cordenat(num);
        int x = table[0];
        int y = table[1];
        String key2[][] = new String[x][y];
        int fx,fy,cont = 0;

        for(fx = 0; fx < x; fx++){
            for(fy = 0; fy < y; fy++){
                if(cont < characters.length){
                    key2[fx][fy] = characters[cont];
                    cont++;
                }else{
                   break;
                }
            }
        }
        key = key2;
    }



}

http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.