Ajuda

Ola, tudo bem? Esse é o meu primeiro post, estou estudando programaçao aqui na Polonia, entao imagina so a dor de cabeça (as aulas sao em Polaco), enfim, dito isso, estou retomando alguns exercicios iniciais, porque sinto que esta faltando muito do basico para mim, entao, nesse exercicio aqui na hora que estou imprimindo esta sempre saindo NaN ou Null no valor IMC, eu ja tentei de tudo, sera que alguem poderia dar uma olhada em como eu posso resolver? (Vou colocar os codigos aqui, me desculpem se eu estiver postando algo de maneira errada, podem deletar se eu infringir alguma regra.) Muito obrigado!

Classe Paciente>>>>

package Paciente;

public class Paciente {
public double peso;
public double altura;

public Paciente(double peso, double altura) {

}

public double calcularIMC() {
    return (this.peso / (Math.pow(this.altura, 2)));
}

public String valorIMC() {
    String imc = Double.toString(calcularIMC());
    return imc;

}

public String diagnostico() {
    double result = calcularIMC();

    if (result < 16) {
        return "Baixo peso muito grave.";
    } else if (result >= 16 && result <= 16.9) {
        return "Baixo peso grave.";
    } else if (result > 17 && result <= 18.49) {
        return "Baixo peso.";
    } else if (result > 18.49 && result <= 24.99) {
        return "Peso normal.";
    } else if (result >= 25 && result <= 29.99) {
        return "Sobrepeso.";
    } else if (result >= 30 && result <= 34.99) {
        return "Obesidade grau I.";
    } else if (result >= 35 && result <= 39.99) {
        return "Obesidade grau II.";
    } else {
        return "Obesidade grau III.";

    }
}

}

Classe principal >>>>

package Paciente;

public class Principal{

public static void main(String[] args) {
    Paciente primeiroPaciente = new Paciente(70, 1.74);
    System.out.println("Diagnostico do primeiro paciente: " + "\n" + "IMC de: " + primeiroPaciente.valorIMC() +  " kg/m², " + primeiroPaciente.diagnostico() + "\n" );

    Paciente segundoPaciente = new Paciente(80, 1.50);
    System.out.println("Diagnostico do segundo paciente: " + "\n" + "IMC de: " + segundoPaciente.valorIMC() +  " kg/m², " + segundoPaciente.diagnostico() + "\n" );

    Paciente terceiroPaciente = new Paciente(90, 1.80);
    System.out.println("Diagnostico do terceiro paciente: " + "\n" + "IMC de: " + terceiroPaciente.valorIMC() +  " kg/m², " + terceiroPaciente.diagnostico() + "\n" );

    Paciente quartoPaciente = new Paciente(55, 1.50);
    System.out.println("Diagnostico do quarto paciente: " + "\n" + "IMC de: " + quartoPaciente.valorIMC() +  " kg/m², " + quartoPaciente.diagnostico() + "\n" );

    Paciente quintoPaciente = new Paciente(60, 1.60);
    System.out.println("Diagnostico do quinto paciente: " + "\n" + "IMC de: " + quintoPaciente.valorIMC() +  " kg/m², " + quintoPaciente.diagnostico() + "\n" );
}

}

Veja, você invoca o construtor da classe Paciente, passando os argumentos, mas não atribui os valores dos argumentos aos atributos do objeto sendo criado:

Altere o construtor para:

public Paciente(double peso, double altura) { 
    this.peso = peso;
    this.altura = altura;
}

Isso deve resolver.

Caramba, como foi parar tão longe? Eu tive umas entrevistas para ir, porém, congelaram a vaga. O mercado aí é muito bom e pagam melhor que no Brasil.

1 curtida

Já ia me esquecendo. Títulos de tópicos devem dar uma síntese do que se procura. Isso facilita a busca, caso alguém venha a ter o mesmo problema que você, no futuro, terá mais facilidade em encontrar uma solução.

1 curtida

Hey Darlan, muito obrigado, deu certinho, vou estudar novamente sobre o uso do this, porque nao ta muito claro para mim, esses pequenos vacilos ta me dando muita dor de cabeça nessa altura do curso que to fazendo. Entao, eu venho da area de design, sou totalmente visual ai to quebrando a cabeça mas curtindo demais programaçao, eu morava na Italia ai minha namorada é polaca dai eu vim para ca com ela, nossa, o mercado aqui é muito aquecido e realmente o pessoal ganha bem e na minha opiniao o poder da moeda é o dobro do real, eu to tentando entrar no mercado, do zero mesmo, estagio e tal, porque tem muitas vagas. Valeu mesmo!

Obrigado pelo conselho, vou fazer assim os proximos, e é aqui mesmo que eu peço ajuda para esse tipo de pergunta?

Segundo a cotação, o zloty é alguns centavos mais valorizado que o real, porém, a questão do poder de compra considera outros fatores, como força da economia.
Cara, eu to tentando ir praí já há algum tempo.

Vamos lá. Você entende que tem a classe e o objeto, correto?

//Classe
public class Foo {
    int x;
    public Foo(int x) {
        //O que colocar aqui?
    }
}


//Objeto
Foo foo = new Foo(10);

Agora, o que colocar na linha comentada, dentro do método?

x = x;

Isso não funciona, pois o java entende que ambos os x são o mesmo, pois ele vai considerar o menor escopo, no caso, o método exec.
O que fazer?
Informar que eu quero atribuir o valor do x que eu recebi como argumento do método ao x da instãncia de objeto. Aí entra o this (este).

this.x = x;

Ou seja, estou dizendo que o valor do x recebido deve ser atribuído ao valor do x pertencente a instância de objeto em questão.

Além do this, temos o super:

//Outra classe
public class Doo extends Foo {
     //Como o construtor de Foo espera parâmetro, somos obrigados a criar um que também espere:
    public Doo(int x) {
        super(x);
    }
}

A linha super(x); está invocando o construtor da super classe. Sempre que quisermos referenciar algo da super classe, podemos usar o super.

Então, o uso do this depende do escopo em que eu estou trabalhando e do que eu quero referenciar.

Darlan, obrigado pela explicacao, ficou muito claro para mim agora, vou tentar aplicar no exercicios.
Quanto ao zloty, exatamente, é quase o mesmo valor do real, mas a maioria das coisas o que voce gastaria 20 no brasil voce gastaria 10 aqui, entao é bem interessante, ah, claro que tem coisas que sao quase o mesmo preço, tipo aluguel de casa e apartamento, mas de resto, eu gosto muito, lugar bom, segurança absurda, clima bom (eu nao gosto de calorao), gente bonita, o pessoal è mais reservado e nao è aquela loucura de turistas, entao è bem bom.

Beleza!
Quando eu estiver indo, te dou um toque pra gente tomar umas beras junto!

Mas com certeza, sinto tanta falta de amigos aqui, eu moro na regiao de Cracovia, me adiciona no facebook, estou com a mesma foto, procura apenas como Israel Filipe, abraçao e valeu da ajuda! To aqui estudando.

Ah, eu preciso fechar esse topico aqui? Se sim, como que faz?

Eu tive duas propostas para Wroclaw e Gdanski. Tenho um amigo que está em Krakow (na verdade, ele foi meu aluno de java).

Acho que você consegue marcar uma opção como sendo a solução. Mas, eu nunca fiz isso. hahahaha