How to make a method return a string in Java

2

I want to create a program that reads the name and age of a person and compares the ages and finally shows the name of the oldest person. My rationale was to compare which is the largest and return the index of the position of the array . But the return is always 0. And also I do not know how to get the return and shows the contents of the array in the position.

package Lista1;
import java.util.Scanner;

public class Pessoa {
    private static String nome;
    private static int idade;

    public static int comparaIdade(Pessoa[] pessoa){

        int maior=0;
        int ind = 0;

        for(int i = 0; i<3; i++){
            if(pessoa[i].idade>maior){
                maior=pessoa[i].idade;
                ind=i;
            }
        }
        return ind;

    }

    public static void main(String[] args){
        Pessoa[] pessoa = new Pessoa[3];
        Scanner input = new Scanner(System.in);

        for(int i = 0; i<3; i++){
            System.out.println("Digite o nome da pessoa: ");
            pessoa[i].nome = input.nextLine();
            System.out.println("Digite a idade da pessoa: ");
            pessoa[i].idade = input.nextInt();
            input.nextLine();
        }

        System.out.printf("Nome da pessoa mais velha: %d", comparaIdade(pessoa));

    }



}
    
asked by anonymous 08.09.2017 / 20:46

1 answer

3

If you want to return the name, you should do this and not return the index as you were doing.

There are several other errors there. You are mixing the person with the algorithm, you are creating static members where they should be instance, you are not instantiating an object before using it.

import java.util.Scanner;

class Pessoa {
    public String nome;
    public int idade;
}
class Programa {
    public static String comparaIdade(Pessoa[] pessoa){
        int maior = pessoa[0].idade;
        int indice = 0;
        for (int i = 1; i < 3; i++) {
            System.out.println(pessoa[i].idade);
            if (pessoa[i].idade > maior) {
                maior = pessoa[i].idade;
                indice = i;
            }
        }
        return pessoa[indice].nome;
    }

    public static void main(String[] args){
        Pessoa[] pessoa = new Pessoa[3];
        Scanner input = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            pessoa[i] = new Pessoa();
            System.out.println("Digite o nome da pessoa: ");
            pessoa[i].nome = input.nextLine();
            System.out.println("Digite a idade da pessoa: ");
            pessoa[i].idade = input.nextInt();
            input.nextLine();
        }
        System.out.printf("Nome da pessoa mais velha: %s", comparaIdade(pessoa));
    }
}

See running on ideone . And on Coding Ground . Also I placed GitHub for future reference .

    
08.09.2017 / 20:53