Ajuda Calcular peso OO

1 resposta
S

Desenvolve esse código mas não executa o cálculo.

package alturasexo;

public class Pessoa {
    
   public String nome;
   public int idade;
   public String sexo;
   public double altura;
   public double peso;
   

    Pessoa() {
    }
   
    public void estadoatual(){
        System.out.println("nome " +this.getNome());
        System.out.println("idade " + this.getIdade());
        System.out.println("sexo " +this.getSexo());
        System.out.println("altura " +this.getaltura());
        System.out.println("peso " +this.getpeso());
    
    
    }
    
    
   public void calucarpeso(){
      
      if (sexo == "m" || sexo == "M") {
           this.setpeso(72.7 * altura - 58);
                 
       } else if(sexo == "m" || sexo == "M") {
           this.setpeso(72.7 * altura - 44.7);
       }            
}   
   
   public Pessoa(String nome, int idade, String sexo, double altuda) {
        this.nome = nome;
        this.idade = idade;
        this.sexo = sexo;
        this.setaltura(0);
    }

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return this.idade;
    }

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

    public String getSexo() {
        return this.sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public double getaltura() {
        return this.altura;
    }

    public void setaltura(double altura) {
        this.altura = altura;
    }

    public double getpeso() {
        return this.peso;
    }

    public void setpeso(double peso) {
        this.peso = peso;
    }

    private void setaltura(String s) {
    }

    
}

package alturasexo;

import java.util.Scanner;

public class Alturasexo {     
       
       public static void main(String[] args) {       
       
       Scanner digitar = new Scanner(System.in);
       
        
       Pessoa dados = new Pessoa();
       dados.setNome("Silvio");
       dados.setIdade(18);
       dados.setaltura(1.74);
       dados.setSexo("f");       
       dados.calucarpeso();
       dados.estadoatual(); 
       
        
    }

1 Resposta

peczenyj

Vamos la

Em primeiro lugar vamos sobre sexo. Vc no seu cálculo faz if ( condição) else if ( mesma condição) e isso trás consequências pois vc nunca calcularia para o sexo feminino

Agora, fazer sexo ser m ou f é perigoso. Se vc só admite duas possibilidades, mais facil criar um boolean masculino (de for false é feminino). Ou criar uma classe que representa sexo (no caso parece um Enum ). X

Mas enfim se vc quer guardar m ou f, então te duas escolhas: use char ou compare strings com metodo equals ( == não serve )

complemento: o metodo equals é exigido quando vamos comparar se dois objetos são iguais, e Strings são objetos. o operador == funciona entre tipos primitivos ( char, int, etc ) e entre objetos ele mostra se são referencias para o mesmo objeto, o que pode dar resultados esquisitos.

Criado 30 de outubro de 2016
Ultima resposta 30 de out. de 2016
Respostas 1
Participantes 2