Estou com uma duvida e gostaria de ver se alguem consegue me dar uma luz, queria fazer um codigo bem simples, q tem um vetor de String, com alguns Nomes de usuario e Senha.
Basicamente seria um JForm de Login sem BD.
Porem estou encontrando dificuldades para fazer os teste, no cod abaixo nao coloquei a senha, mas se acertar o Login a senha fica facil, o problema é que nao consigo parar o for.
Eu gostaria de encaixar um else para dar uma msg de erro quando o Usuario nao fosse encontrado, porem o for passar por todos os indices e da varias msg seguidas.
Alguem pode me corrigir ? Grato
Você ta usando equals para compara String, tenta algo assim no for.
for(inti=0;i<nome.length;i++){if(nome[i].equalsIgnoreCase(user)){JOptionPane.showMessageDialog(null,"Parabéns");break;}if(i==(nome.length-1))JOptionPane.showMessageDialog(null,"Usuário não encontrado");}
brunogalvaos
Bom dia “braddock10”, eu faria essa verificação fora do for, criaria uma variável para guardar o nome do usuário caso achasse o user dentro do array, resolvendo o problema das mensagens repetitivas de usuário não encontrado, ficaria + ou - assim:
importjava.util.Scanner;publicclassTeste{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);String[]nome=newString[4];nome[0]="Thiago";nome[1]="Rosana";nome[2]="Steve";nome[3]="Bill";System.out.printf("Digite o usuário: ");StringuserDigitado=sc.nextLine();StringuserEncontrado=null;loop:for(inti=0;i<nome.length;i++){if(userDigitado.equals(nome[i])){userEncontrado=nome[i];breakloop;}}if(userEncontrado!=null){System.out.println(userEncontrado+" logado!");System.out.println("Chama a tela principal");}else{System.out.println("Usuário não encontrado!");}}}
haha gente ! Muito Obrigado, estou terminando aqui logo mais posto tudo, mas resolveu sim …
Muito Obrigado
braddock10
só uma dúvida aqui …
o método lenght retorna um inteiro com o tamanho do String, quer dizer o tamanho da palavra, qtd de caracteres
sendo assim no codigo:
if (i==(nome.length-1))
JOptionPane.showMessageDialog(null, "Usuário não encontrado");
JtfNome.setText(null);
JtfSenha.setText(null);
JtfNome.grabFocus();
}
resumindo Se o contador i for diferente da String nome (length -1) por ex um nome com mais doq i caracteres
Então ele executa o resto … ao inves de colocar um else fez com if mesmo.
é isso mesmo ?
ta quase claro so fiquei com um pouco de duvida se entendi certo, antes eu estava com ele aquele problema de repetiçao, pq o for estava varrendo o array e dando mensagens de erro infinitamente, nesse segundo If nao preciso do break, pq senao ele pararia o for ?
Muito obrigado hein gente !
braddock10
To trabalhando com Jframe, parte visual e nunca tinha mexido com essa IDE do Netbeans, tem até que bastante coisa, mas tem detalhes simples que tem de ser via codigo, exemplo cor do formulario, tive que dar um getContentPane().setBackground(Color.LIGHT_GRAY); pq nas propriedades não funcionou, é assim mesmo no inicio ?
vlw de novo minha gente ! 8)
braddock10
Agora encaixando a senha, vou precisar fazer um outro for pra passar pela senha, ou posso colocar essa senha no if para ser comparada ...
privatevoidJbLoginActionPerformed(java.awt.event.ActionEventevt){nome[0]="Thiago";nome[1]="Rosana";nome[2]="Steve";nome[3]="Bill";senha[0]="123456";senha[1]="soufeliz123";senha[2]="thundercats";senha[3]="hahaha123";user=JtfNome.getText();passwd=JtfSenha.getText();for(inti=0;i<=nome.length;i++){if(nome[i].equalsIgnoreCase(user))//ignorafonteMaius/Minusc{JOptionPane.showMessageDialog(rootPane,"PARABENS");JFrameJFPrincipal=newPrincipal();JFPrincipal.setVisible(true);this.dispose();break;}if(i==(nome.length-1))JOptionPane.showMessageDialog(null,"Usuário não encontrado");JtfNome.setText(null);JtfSenha.setText(null);JtfNome.grabFocus();}}
S
Sevalle
Seguinte, acho que você entendeu algo errado.
for(inti=0; i < nome.length; i++) if(i==(nome.length-1))JOptionPane.showMessageDialog(null,"Usuário não encontrado");
Então ele só entra uma vez nesse if, quando for a ultima posição do vetor, então, se você chegou na ultima posição do seu vetor e o usuário ainda não foi encontrado você manda a mensagem.
Em relação a senha…
Se o vetor da senha tiver o mesmo tamanho do vetor dos usuários, e a posição for correspondente, você pode fazer algo assim:
ou o .length qdo trabalha com array conta a qtd de indices e nao de caracteres ?
braddock10
a dúvida apesar de parecer boba, é só para eu entender :?
pq se for criado um vetor String [3] na verdade ele tem 4 posiçoes, ja que usa-se indice ZERO, se for criada uma var INT e passada para ela o vetor.length a variavel retorna o numero 3 e nào 4 como deveria ser.
portanto o (int i=0; i < vetor.length;i++);
fica meio confuso
o for deveria passar por todos os indices do array, entao pelo que eu entendi ele faz assim: