Como ler 10 nomes e guardar em um Array, Achei e Nao Achei

5 respostas
java
M

Pessoal preciso de uma ajuda no meu código, consegui encontrar os nomes lidos ACHEI mas não consegui acertar com o else NAO ACHEI só esta faltando isso ,

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);
	
	String[] nomes = new String[10];
	
	for(int i = 0; i < nomes.length; i++) {
		System.out.println("Digite o" + (i+i) + " º nome: ");
		String nomepessoa = scan.next();
	}
	
	System.out.println("Agora digitar um nome a ser buscado:  ");
	String nomebuscar = scan.next();
	
	boolean encontrou=false;
	
	for(int i = 0; i < nomes.length; i++) {
		if(nomes[i] != null && nomes[i].equalsIgnoreCase(nomebuscar)) {
			encontrou=true;
		}
	}
	
	if(encontrou=true) {
		System.out.println("ACHEI");
		
	}else {
		
		System.out.println("NAO ACHEI");
	}
}

}

5 Respostas

W

Saudações meu querido.

Coloque um While dentro do código de buscar nome!

P

Aqui estás a abribuir valor e não a comparar. O que tu queres é (nota o duplo igual)
if(encontrou == true) {

Ou, de forma mais simples:
if(encontrou) {

S

Aqui você está atribuindo true para a variável encontrou, então sempre vai entrar no if.

Faça simplesmente assim:

if (encontrou) {
    System.out.println("ACHEI");
} else {
    System.out.println("NAO ACHEI");
}
H

Vc lê os nomes, mas não guarda eles no array, o correto deveria ser:

for (int i = 0; i < nomes.length; i++) {
    System.out.println("Digite o " + (i + 1) + "º nome: ");
    nomes[i] = scan.next();
}

Ah, também mudei o i + i por i + 1, que acho que é o que vc queria. E arrumei os espaços (adicionei um antes do número, e retirei o outro antes do º).

Além, é claro, dos outros erros já apontados acima.

Outra coisa que eu mudaria é:

boolean encontrou = false;
for (int i = 0; i < nomes.length; i++) {
    if (nomes[i] != null && nomes[i].equalsIgnoreCase(nomebuscar)) {
        encontrou = true;
        break; // já encontrou, pra que continuar procurando?
    }
}

Adicionei o break para interromper o for, afinal, se já encontrou o nome, não tem porque continuar procurando.

H

Outro detalhe é que eu mudaria para nextLine() em vez de next().

Isso dá diferença se o nome tiver espaços. Por exemplo, se digitar “Fulano de Tal”, o primeiro nome será apenas “Fulano”, o segundo será “de” e o terceiro será “Tal” (ele nem espera vc digitar, já seta os nomes direto, veja).

Já usando nextLine(), ele lê corretamente “Fulano de Tal” como um único nome.

Criado 14 de dezembro de 2022
Ultima resposta 14 de dez. de 2022
Respostas 5
Participantes 5