Algoritmo que receba o nome de 10 pessoas e verifique se o nome Fernanda está entre eles

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?

import java.util.Arrays;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Dez_pessoas_consulta_fernanda {

public static void main(String[]args) {
	
	String[] nomes = new String [10];
	int indice = 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 (int i=0; i< nomes.length; i++) {
    	System.out.println((i+1) + "ª Nome: " + nomes[i]);
    	
    	String resposta = 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 ( int i = 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":

for ( String nome : nomes ) {
    if ( nome.equals( "Fernanda" ) ) {
        System.out.println( "Nome Fernanda encontrado..."  );
    }
}

Esse for serve para percorrer estruturas iteráveis como os arrays. Para fazer um paralelo com o for tradicional, o código acima seria escrito assim:

for ( int i = 0; i < nomes.length; i++ ) {
    String nome = nomes[i];
    if ( nome.equals( "Fernanda" ) ) {
        System.out.println( "Nome Fernanda encontrado..."  );
    }
}

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.

Gratidão, muito obrigado por todo tempo desprendido e pela atenção.