[Achar a maior e a menor idade] (era: Ajudaaaa)

3 respostas
P
estou criando um metodo para ver a maior idade e amenor mas quando eu crio este metodo ela so me devolve o primeiro numero digitado
ublic static void main(String[] args) {
		
		recebeDados();
		
	}
    public static void recebeDados(){
    	Scanner sc = new Scanner(System.in);
    	int idade[]= new int[2];
    	String sexo[]=new String[2];
    	
    	for(int i=0;i<sexo.length;i++){
    		
    	System.out.println("Digite sua Idade");
        idade[i]= sc.nextInt();
    	
        System.out.println("Digite seu sexo");
        sexo[i]=sc.next();
        
    	}//fim do for
   
		maiorIdade( idade[0]);
    }//fim dometodo recebeDados
    
    public static void maiorIdade(int idade){
    	int maior=idade;
    
    	
    	if(maior < idade){
    	idade=Math.max(maior, idade);
    
    	}
    	
    imprimeDados(maior);
    
    }
    public static void imprimeDados(int maior){
    	System.out.println("A maior idade é: " + maior);
    
    	
    	
    }
    
    
}

me ajudem por favor, como eu faço para chamar o array inteiro e não suas posições

EDIT (Moderador) - Por favor, use títulos mais elucidativos. "Ajudaaa" não ajuda nada.

3 Respostas

J

e só vai devolver apenas um valor mesmo!!! A chamada ao método maiorIdade(int x) só é chamado uma vez! Vc tem que colocá-lo dentro do laço do for,,, e passar como argumento a variavel i, pois se não ele nunca vai achar a maior idade já que vc passa o argumento o valor 0.

Mas mesmo assim existe um erro, pois na primeira vez que ele for chamado ele vai jogar como maior valor o primeiro valor do array.

tire o maiorIdade de dentro do metodo recebeDados();

tire o parametro idade de maiorIdade;

faça assim:
public static void maiorIdade(){

  int maior = idade[0];
   
  for(int i = 0 ; i<idade.length; i++){
      if(idade[i]>maior)
        maior = idade[i]
  }
  System.out.println("idade maior "+maior);
}

---------------------------------------------------------------------------------------//----------------------------------------------------------------------------------------------------------------

[url]www.godevelopgames.wordpress.com[/url] <<< desenvolvimento de jogos!!!

ViniGodoy

1. Procure deixar suas funções realizando tarefas específicas. A recebe dados deveria só receber dados, e devolver os dados recebidos. A maior deveria pegar um conjunto de dados e devolver o maior. E a função imprime deveria imprimir. Suas funções não estão retornando nada.

2. Aprenda a usar um depurador. Vai te ajudar muito.

public static void main(String[] args) {	
   imprimeMaiorIdade(maiorIdade(recebeDados()));		
}

public static int[] recebeDados(){
   Scanner sc = new Scanner(System.in);
   int idade[]= new int[2];
   String sexo[]=new String[2];
    	
   for(int i=0;i<idade.length;i++){
    		
      System.out.println("Digite sua Idade");
      idade[i]= sc.nextInt();
    	
      System.out.println("Digite seu sexo");
      sexo[i]=sc.next();
        
   }//fim do for
   
    return idade;
}//fim dometodo recebeDados
    
public static void maiorIdade(int[] idades){
   int maior = 0;
   for (int idade : idades) {
      if (idade > maior) 
         maior = idade; //Não é necessário o max. Você já sabe que idade > maior
   }
   return maior;
}

public static void imprimeMaiorIdade(int idade){
   System.out.println("A maior idade é: " + idade);
}

3. Ah sim, e ao criar tópicos, dê um tópico mais descritivo do que "Ajudaaaa".

B

Outra solução é usar o Arrays para fazer a ordenação, assim tu saberás que o último registro é o maior e que o primeiro é o menor;

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


public class Main {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		imprimeMaiorIdade(maiorIdade(recebeDados()));           
	}

	
	public static int[] recebeDados(){   
		   Scanner sc = new Scanner(System.in);   
		   int[] idade = new int [2];
		   String sexo[]=new String[2];
		           
		   for(int i=0;i<idade.length;i++){   
		               
		      System.out.println("Digite sua Idade");   
		      idade[i]= sc.nextInt();   
		           
		      System.out.println("Digite seu sexo");   
		      sexo[i]=sc.next();   		      
		           
		   }//fim do for   
		     
		    return idade;   
		}//fim dometodo recebeDados   
		       
		public static int maiorIdade(int[] idades){   
		   Arrays.sort(idades);
		   return idades[idades.length-1];
		   
		}   
		  
		public static void imprimeMaiorIdade(int idade){   
		   System.out.println("A maior idade é: " + idade);   
		}      

}
Criado 13 de julho de 2009
Ultima resposta 14 de jul. de 2009
Respostas 3
Participantes 4