Duvida com Arrays e Metódo

8 respostas
gabrieltosi

Bem é, to aprendendo pela apostila da Caelum, sei que tem milhares de tópicos aqui sobre isso, mas dei uma olhada e não consegui achar nenhum igual ao meu. Bem, vamos ao problema:

Tenho que criar um método que verifica se exista a referência a um objeto dentro de um Array

Public void contem (Funcionario x){
		
		for (int i = 0; i < empregados.length; i++){
			
			if (empregados[i] == x){
				
				System.out.println("Sim"); 
				
			}//fim da confição if
			
		}//fim do loop
		 
		
	}//fim do metodo contem

minha parada ficou assim. Apostila fala para por como PUBLIC BOOLEAN, mas quando tento por ele pede para por o return, mas o return só pode ser posto fora do Loop, então não consigo imaginar como passar a informação de dentro do For para o return.

Desse jeito que postei, eu gostaria de indicar quando a condição do If for falsa, mas quando ponho algo como:

else {

System.out.println("Não");

}

Como é um loop, ele fica:

Não
Não
Sim
Não
Não
Não

quer dizer ele percorre toda a Array dizendo onde é Sim e onde é Não, quando na verdade quero que percorra somente uma vez, e se achar apareça Sim e se não achar apareça Não.
Me desculpa pelo tamanho da pergunta, e se ficou algo confuso.

Abraços, e obrigado pela atenção.

8 Respostas

javax.swing.Daniel

Segue um exemplo !!

public class Teste {
	
	public static boolean contem(String x)  
	{    
		String[] empregados = {"J", "M", "D", "T", "L"};
	            
	        for (int i = 0; i < empregados.length; i++)  
	        {                  
	            if (empregados[i] == x)                     
	                return true;        
	        }   
	  
	         return false; 
	}

	public static void main(String[] args) {
		
		String m = "R";
			  		  
		if( contem(m) )  
		System.out.println("Sim");  
		else  
		System.out.println("Não");
	}

}
douglas_arantes

Olá, Porque você diz que o “return” só pode ser fora do loop???

Até mais.

douglas_arantes
javax.swing.Daniel:
Segue um exemplo !!
public class Teste {
	
	public static boolean contem(String x)  
	{    
		String[] empregados = {"J", "M", "D", "T", "L"};
	            
	        for (int i = 0; i < empregados.length; i++)  
	        {                  
	            if (empregados[i] == x)                     
	                return true;        
	        }   
	  
	         return false; 
	}

	public static void main(String[] args) {
		
		String m = "R";
			  		  
		if( contem(m) )  
		System.out.println("Sim");  
		else  
		System.out.println("Não");
	}

}

E ai, acho que o amigo aqui resolveu seu problema.
Era isso que você queria???

gabrieltosi

douglas_arantes:
Olá, Porque você diz que o “return” só pode ser fora do loop???

Até mais.

Então, acho que meu erro estava exatamente nessa parte do código. O Eclipse ficava dizendo que precisa do return fora, do for, mas agora pelo código que postaram:

for (int i = 0; i < empregados.length; i++)    
            {                    
                if (empregados[i] == x)                       
                    return true;          
            }     
        
             return false;

Eu estava pondo só o return dentro, o return true e não pondo fora, o return false. Só mais uma pergunta, o return false ali só será ativado quando a condição dentro do If não for correspondida?

douglas_arantes

gabrieltosi:
douglas_arantes:
Olá, Porque você diz que o “return” só pode ser fora do loop???

Até mais.

Então, acho que meu erro estava exatamente nessa parte do código. O Eclipse ficava dizendo que precisa do return fora, do for, mas agora pelo código que postaram:

for (int i = 0; i < empregados.length; i++)    
            {                    
                if (empregados[i] == x)                       
                    return true;          
            }     
        
             return false;

Eu estava pondo só o return dentro, o return true e não pondo fora, o return false. Só mais uma pergunta, o return false ali só será ativado quando a condição dentro do If não for correspondida?

Sim, o “return false”, só será executado, se " if (empregados[i] == x)" NÃO for verdadeira após percorrer todo o Array, então sai fora do laço e devolve falso.

gabrieltosi

E eu vou ter que criar essa condição para novo objeto que eu quiser verificar?

String m = "R";  
                        
        if( contem(m) )    
        System.out.println("Sim");    
        else    
        System.out.println("Não");

Não existe alguma forma de por isso dentro do próprio método contem? Para que ele já vá exibir essa mensagem quando eu usá-lo?

douglas_arantes

Como o método é Booleano, ele só pode retornar FALSE ou TRUE, o que torna necessário essa verificação (if, else).

gabrieltosi

Ah sim, entendi. Muito obrigado, pelas explicações.
Vlw mesmo.

Criado 21 de junho de 2012
Ultima resposta 21 de jun. de 2012
Respostas 8
Participantes 3