Erro no código

Olá pessoal…
Já tentei ajeitar esses erros e nunca consigo terminar, : ). Alguém tenta?

public class Pessoa{

	private String nome;
	private char sexo;
	private int idade;
	
	public Pessoa (String nome, char sexo){
		this.nome = nome;
		this.sexo = sexo;
	}
	
	//gets
	public String getNome(){
		return nome;
	}
	
	public String getSexo(){
		return sexo;
	}
	
	public String getIdade(){
		return Idade;
	}
	
	//sets
	public void setIdade (int idade){
		this.idade = idade;
	}
	
	public boolean ehMaior (){
		boolean ehMaior = false;
		if (sexo == 'f' ){
			if (idade >= 21){
				ehMaior = true;
			}
			else{
				ehMaior = false;
			}
		}
		else if (sexo == 'm'){
			if (idade >= 18){
					ehMaior = true;
			}
		}
		else{
			ehMaior = false;
		}
	}
	
	public String toString(){
		return nome+ " "+this.setIdade()+" "+sexo;
	}
	
	public static void main (String [] args){
		pessoa pessoa = new pessoa ("Maria", "f");
		pessoa.setIdade(15);
		System.out.println ("pessoa.ehMaiorIdade()");
		pessoa.setIdade(23);
		System.out.println ("Pessoa eh maior de idade()");
	}
}
		

se puder mostrar qual erro está dando ajudaria muito…

agora… você não pode chamar um método dessa maneira, dentro de uma string

System.out.println("pessoa.ehMaiorIdade()");   

tente sem as aspas… assim:

System.out.println(pessoa.ehMaiorIdade());   

ah… e certifique-se de que esse método existe na sua classe

edit:

tava reparando agora… se você quer recuperar um valor, tem que usar o ‘get’
como getIdade() por exemplo… reveja seu método toString()

public String getIdade(){ return Idade; }
O atributo idade é do tipo INT e não do tipo STRING. O atributo idade é minusculo.

public int getIdade(){ return idade; }

public boolean ehMaior (){ boolean ehMaior = false; if (sexo == 'f' ){ if (idade >= 21){ ehMaior = true; } else{ ehMaior = false; } } else if (sexo == 'm'){ if (idade >= 18){ ehMaior = true; } } else{ ehMaior = false; } }
Como você quer que o método retorne true ou false, você tem que colocar o return

if(idade > 21) { ehMaior = true; return ehMaior; }else{ return ehMaior; //Como ela ja esta definida como false; }

Olá javaxpython,

eu modelei dessa forma, não sei se atende sua necessidade:

public class Pessoa {

    private String nome;
    private char sexo;
    private int idade;

    public Pessoa(String nome, char sexo) {
        this.nome = nome;
        this.sexo = sexo;
    }

    //gets  
    public String getNome() {
        return nome;
    }

    public char getSexo() {
        return sexo;
    }

    public int getIdade() {
        return idade;
    }

    //sets  
    public void setIdade(int idade) {
        this.idade = idade;
    }

    public boolean ehMaior() {
        boolean ehMaior = false;
        if (sexo == 'f') {
            if (idade >= 21) {
                ehMaior = true;
            } else {
                ehMaior = false;
            }
        } else if (sexo == 'm') {
            if (idade >= 18) {
                ehMaior = true;
            }
        } else {
            ehMaior = false;
        }
        return ehMaior;
    }

    public static void main(String[] args) {
        Pessoa pessoa = new Pessoa("Maria", 'f');
        pessoa.setIdade(23);
        if (pessoa.ehMaior()) {
            System.out.println("Eh maior!");
        } else {
            System.out.println("Eh menor!");
        }
    }
}

Eu sugiro que você estude tipos de dados, operadores lógicos, estruturas de decisões e estruturas de repetições. Qualquer dúvida, poste aqui.

[]'s

[quote=williamdasflores] public String getIdade(){ return Idade; }

O atributo idade é do tipo INT e não do tipo STRING. O atributo idade é minusculo.

public int getIdade(){ return idade; }
[/quote]

Desculpe, eu não tinha visto sua resposta :slight_smile:

if(idade > 21)  
{  
    ehMaior = true;  
    return ehMaior;  
}else{  
  return ehMaior; //Como ela ja esta definida como false;  
}

[quote=alexvingg] if(idade > 21)
{
ehMaior = true;
return ehMaior;
}else{
return ehMaior; //Como ela ja esta definida como false;
} [/quote]

ou de uma forma mais direta:

boolean ehMaior = false;
if(idade>21){
     ehMaior = true;
}
return ehMaior;

[quote=alexvingg] if(idade > 21)
{
ehMaior = true;
return ehMaior;
}else{
return ehMaior; //Como ela ja esta definida como false;
} [/quote]

Sim, pode ser melhorado e muito, por exemplo:

         if(idade > 21 && sexo == 'M'){
                 //blah
         }

Eu só não quiz alterar muito o que foi feito.

[]'s