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 
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