Algoritmo que receba o nome de 10 pessoas e verifique se o nome Fernanda está entre eles
2 respostas
java
Y
Yaakov_Heli
Olá pessoal. Sou novo aqui no fórum e esse é meu primeiro post. Espero não estar descumprindo nenhuma regra e se estiver, me desculpem, digam qual e a corrigirei. Sou novo no universo da programação, esse é meu primeiro semestre.
Preciso desenvolver um algoritmo que receba o nome de 10 pessoas e verifique se o nome Fernanda está entre eles. Já fiz a parte dos nomes, mas não faço a menor ideia de como verificar se o nome está na lista usando o JOptionPane. Alguém poderia me ajudar?
publicstaticvoidmain(String[]args){String[]nomes=newString[10];intindice=0;while(indice<10){nomes[indice]=JOptionPane.showInputDialog("Digite o nome de 10 cidades.\n"+"Cidade "+(indice+1)+" de 10: ");if(nomes[indice].length()>15){JOptionPane.showMessageDialog(null,"Só são permitidas 15 letras.","Atenção!",0);}else{indice++;}}Arrays.sort(nomes);for(inti=0;i<nomes.length;i++){System.out.println((i+1)+"ª Nome: "+nomes[i]);Stringresposta=JOptionPane.showInputDialog("Clique em OK quantas vezes quiser para consultar os nomes salvos: ");}}
Olá, boa tarde! Seja bem vindo!
Para verificar se uma String tem o mesmo conteúdo que outra, você deve usar o método equals, ou seja, umaString.equals( outraString ). Esse método retornará verdadeiro caso as duas tenham o mesmo conteúdo (diferenciando letras maiúsculas de minúsculas) ou falso caso contrário.
Para o seu caso, basta percorrer o array de nomes e verificar posição por posição.
for(inti=0;i<nomes.length;i++){if(nomes[i].equals("Fernanda")){JOptionPane.showMessageDialog("O nome Fernanda foi encontrado na posição "+i);}}
Uma outra forma de fazer isso seria usando o "for melhorado":
Ou seja, a cada elemento visitado, nome recebe o valor desse elemento e pode então ser usado.
Várias coisas podem ser observadas no seu código, mas a que me mais me saltou aos olhos é o uso de um valor numérico na posição de uma constante na invocação de showMessageDialog. Não sei quem te ensinou isso, pq apesar de funcionar, à rigor, está errado. O correto é usar o valor expresso em uma das constantes contidas na classe JOptionPane para indicar o tipo de diálogo de mensagem. O que eu quero dizer é que isso:
JOptionPane.showMessageDialog(null, "Só são permitidas 15 letras.", "Atenção!", 0 );
Deveria ser isso:
JOptionPane.showMessageDialog(null, "Só são permitidas 15 letras.", "Atenção!", JOptionPane.ERROR_MESSAGE );
Sendo que as constantes que devem ser usadas como argumento no quarto parâmetro do método são:
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.WARNING_MESSAGE
JOptionPane.QUESTION_MESSAGE
JOptionPane.PLAIN_MESSAGE
Caso não tenha entendido a utilidade do uso de cada constante é que imagine, você não tem garantia ALGUMA que 0 indica uma mensagem de erro. Pode ser que em outra implementação do Swing a mensagem de erro seja talvez o valor -10 ou qualquer outro inteiro. Quando fixamos o uso nas constantes definidas nas APIs, temos certeza que, independente da implementação, o comportamento do componente será condizente com o que é fornecido programaticamente.
A definição dessas constantes no código fonte da classe JOptionPane vc pode ver no link a seguir, entre as linhas 368 e 376.
Y
Yaakov_Heli
Gratidão, muito obrigado por todo tempo desprendido e pela atenção.