Avaliem o meu código

2 respostas
J

Olá pessoal , sou iniciante em programação , no momento estou estudando pelo livro do Deitel. No livro tem um exercicio que pede pro usuário entrar com um numero que 4 digitos e o programa criptografa este numero pegando cada digito (multiplicando por 7) % 10. Ai está o código e gostaria que voce avaliassem e se tiver alguma coisa pra acrescenta ou melhorar, sintam-se a vontade .

import javax.swing.JOptionPane;

public class Criptografa {
    public static void main(String[] args)  {
         
          String in;
          int verificaSeELetra;
         //Recebe os dados do Usuario
        do{
                  verificaSeELetra = 0;
         do {
              in = JOptionPane.showInputDialog("Digite um código");

              if (in.length() != 4) {
                  JOptionPane.showMessageDialog(null, "VOCE DEVE DIGITAR 4 NÃ?MEROS", "ERRO", JOptionPane.INFORMATION_MESSAGE);
             }

        } while (in.length() != 4 );// laço retete até o usuário digitar 4 caracteres

                 char temp[] = new char[4];

            for (int i = 0; i < in.length(); i++) {               
                
                temp[i] = in.charAt(i);
                //verifica se nos caracteres digitados se há algum caracter diferente de número
                //se houver o laço é iniciado novamente até o usuário digitar somente números.
                if(Character.isDigit(temp[i])){
                }else{
                verificaSeELetra++;
                }       
                 
            }
                 if(verificaSeELetra > 0){
                    JOptionPane.showMessageDialog(null, "Somente números", "Erro na digitação", JOptionPane.INFORMATION_MESSAGE);
                }
        }while(verificaSeELetra > 0);
        
       int[] g = new int[4];
       int   x = Integer.parseInt(in);
       g[0] = ((x / 1000) * 7) % 10;
       g[1] = (((x % 1000) / 100) * 7) % 10;
       g[2] = (((x % 100) / 10) * 7)% 10;
       g[3] = ((x % 10) * 7 ) %10;
       
       
  
        

      JOptionPane.showMessageDialog(null, ""+g[0]+g[1]+g[2]+g[3] );// minha dúvida é que porque e necessario colocar aspas vazia pra poder exibir um int. nao existem outra maneira

        }
}// FIM DA CLASSE

2 Respostas

Anime

Oi,

Da uma olhadinha aqui…http://www.guj.com.br/posts/list/50115.java :wink:

A

Janfrancisco,

Referente a sua dúvida / avaliação, eu sugeria algumas coisas.

  • Melhorar a identação, pois facilita a leitura do código.
  • Tente dividir o seu código em métodos/classes, pois você atualmente fez tudo no main, o que não é uma boa coisa.

Não entendi este código, não tem nada no IF, apenas no else… !!! //verifica se nos caracteres digitados se há algum caracter diferente de número //se houver o laço é iniciado novamente até o usuário digitar somente números. if (Character.isDigit(temp[i])) { } else { verificaSeELetra++; } Não procurei entender o código, mas caso queira algo apenas se for false (negativo), você pode colocar o ! (Not), assim

if (! Character.isDigit(temp[i])) { verificaSeELetra++; }

Referente a este código

JOptionPane.showMessageDialog(null, ""+g[0]+g[1]+g[2]+g[3] );// minha dúvida é que porque e necessario colocar aspas vazia pra poder exibir um int. nao existem outra maneira Você poe o “”, porque o seu objetivo não é somar os valores e sim mostrar um após o outro, se você tirar o mesmo, o método vai somar o array e enviar apenas o resultado. Isto é uma forma de dizer que é uma string e pedir para o método concatenar a string e não somar.

Tem outras formas de se fazer sim, uma delas é assim

JOptionPane.showMessageDialog(null, String.format("%s - %s - %s - %s ", g[0], g[1], g[2], g[3]));

É importante sempre que tiver dúvida em algum método, ou algo do genero, utilizar a API Javadoc, pois ela pode te ajudar muito !!!
E continue assim, treinando e fazendo sempre examplos que rapido você vai ver sua evolução nos códigos.

Att

Criado 3 de abril de 2011
Ultima resposta 4 de abr. de 2011
Respostas 2
Participantes 3