Public with 2 variables does not return value

2

I have 3 publics that should return a calculation value for me to display on the Activity screen. The first, volume_agua_mehta() , returns normally, but the second, massa_brita_mehta() , and the third, agua_material_cimentício_mehta() , return NaN in TextView .

I wanted to know what I'm doing wrong.

Note: All of these publics are in the same class, and I have retrieved the right variables correctly.

public double volume_agua_mehta(){
    return resultado = 221.91 * exp((-0.005)*resistencia_concreto);
}

public double massa_brita_mehta(){
    return resultado = (130 * 5 + 0.319 * Math.log(resistencia_concreto) - 3.332)) * massa_especifica_sss_brita;
}

public double agua_material_cimentício_mehta(){
    Calculo_Mehta Calculo_Mehta = new Calculo_Mehta();

    double volume_agua_mehta = Calculo_Mehta.volume_agua_mehta();
    double massa_cimento_mehta = Calculo_Mehta.massa_cimento_mehta();
    double massa_aditivo_mineral1_mehta = Calculo_Mehta.massa_aditivo_mineral1_mehta();
    double massa_aditivo_minera2_mehta = Calculo_Mehta.massa_aditivo_minera2_mehta();

    return resultado = volume_agua_mehta/(massa_cimento_mehta+massa_aditivo_mineral1_mehta+massa_aditivo_minera2_mehta);
} 

In class Dosagem_Dados_Gerais :

public EditText txt_resistencia_concreto;
public EditText txt_massa_especifica_sss_brita;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dosagem__dados__gerais);

    txt_resistencia_concreto=(EditText)findViewById(R.id.txt_resistencia_concreto);
    txt_massa_especifica_sss_areia = (EditText)findViewById(R.id.txt_massa_especifica_sss_areia);


    final Button btn_proximo_dados_gerais = (Button) findViewById(R.id.btn_proximo_dados_gerais);
    btn_proximo_dados_gerais.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            //AQUI SÃO FEITAS VERIFICAÇÕES SE OS EDITTEXTS ESTÃO PREENCHIDOS, VOU PULAR ESSA PARTE E IR DIRETO AO PONTO

            Intent it_mehta = new Intent(Dosagem_Dados_Gerais.this, Calculo_Mehta.class);

            it_mehta.putExtra("resistencia_concreto", txt_resistencia_concreto.getText().toString());
            it_mehta.putExtra("massa_especifica_sss_brita", txt_massa_especifica_sss_brita.getText().toString());
            startActivity(it_mehta);

        }
    }

Class Calculo_Mehta :

public double resistencia_concreto;
public double massa_especifica_sss_brita;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String txt_resistencia_concreto = getIntent().getStringExtra("resistencia_concreto"); //Recuperar na string
    resistencia_concreto=Double.parseDouble(txt_resistencia_concreto); //Passando para double

    String txt_massa_especifica_sss_brita= getIntent().getStringExtra("massa_especifica_sss_brita");
    massa_especifica_sss_brita=Double.parseDouble(txt_massa_especifica_sss_brita);

}

Then here are the publics that I showed at the beginning of the post.

Class Resultado :

public TextView resultado_agua;
public TextView resultado_brita;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_resultado);

    resultado_agua = (TextView)findViewById(R.id.txt_resultado_agua);
    resultado_brita = (TextView)findViewById(R.id.txt_resultado_brita);

    final Button btn_calcular_dosagem = (Button) findViewById(R.id.btn_calcular_dosagem);
    btn_calcular_dosagem.setOnClickListener(new View.OnClickListener() {

        volume = Double.parseDouble(resultado_volume.getText().toString());

        public void onClick (View View) {

            Calculo_Mehta Calculo_Mehta = new Calculo_Mehta();

            //ESSE PRIMEIRO FUNCIONA E MOSTRA NO EDIT TEXT PERFEITAMENTE
            double massa_agua_ponto_saturacao_superplastificante_mehta = Calculo_Mehta.volume_agua_mehta()*volume; //Massa água
            String stg_resultado_agua_mehta = Double.toString(massa_agua_ponto_saturacao_superplastificante_mehta);
            resultado_agua.setText(stg_resultado_agua_mehta);

            //ESSE NÃO FUNCIONA
            double massa_brita_mehta = (Calculo_Mehta.massa_brita_mehta(Calculo_Mehta.resistencia_concreto,Calculo_Mehta.massa_especifica_sss_brita))*volume; //Massa brita
            String stg_brita_mehta_mehta = Double.toString(massa_brita_mehta);
            resultado_brita.setText(stg_brita_mehta_mehta);


        }
    }
}
    
asked by anonymous 20.01.2017 / 16:20

2 answers

0

The second method does not "work" because it uses the Calculo_Mehta.resistencia_concreto and Calculo_Mehta.massa_especifica_sss_brita attributes of the Calculation_Mehta class, which are only initialized in the onCreate() method.

You are using an Activity as if it were a "normal" class. When you do Calculo_Mehta Calculo_Mehta = new Calculo_Mehta(); you are creating a Calculus_Mehta object but the onCreate() method is not called.

An Activity should always be created (launched) via an Intent.

I can not give you an alternative because I do not understand the structure of the app, nor am I sure what you want to do.

However one thing is for sure, this form is wrong and will not "work".

    
21.01.2017 / 11:50
0

First tip is to verify that the values are being filled correctly. For example in your first volume_agua_mehta () method, check whether the resistencia_concreto variable is getting the desired value. I created a method based on your own with fixed values importing the java.lang.Math.exp and I get a return correctly:

public double volume_agua_mehta(){
   return 221.91 * exp((-0.005)*234);
}

Return:

  

68.8735

You can also create a method by passing a resistencia_concreto parameter. See:

public double volume_agua_mehta(double resistencia_concreto){
        return 221.91 * exp((-0.005)*resistencia_concreto);
}

See also how the agua_material_cimentício_mehta() method would be passed as a parameter to the Calculo_Mehta class:

public double agua_material_cimenticio_mehta(Calculo_Mehta Calculo_Mehta) {
    return Calculo_Mehta.volume_agua_mehta() / (Calculo_Mehta.massa_cimento_mehta() 
            + Calculo_Mehta.massa_aditivo_mineral1_mehta() 
            + Calculo_Mehta.massa_aditivo_minera2_mehta());
}

So, when calling TextView you should do this:

Calculo_Mehta cal = new Calculo_Mehta();
String valueDouble= Double.toString(agua_material_cimenticio_mehta(cal));
textview.setText(valueDouble);

Note: You should set all values within Calculo_Mehta to work properly.

    
20.01.2017 / 16:59