2013-04-18 3 views
-1

hye, я хочу создать простое приложение для Android BMI. Я нашел этот код, но этот код вычисляется в LBS, а также INCH. но моя программа должна быть создана в KG, а также CM. я уже пытаюсь перекодировать обратно. но я все еще не могу найти решение.Расчет ИМТ Android в CM и KG

это код.

package com.example.bmicalculator; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.TextView; 
    import android.widget.EditText; 
    import android.widget.Button; 
    import android.view.View; 

    public class BMICalculatorActivity extends Activity { 

    private EditText txtheight; 
    private EditText txtweight; 
    private TextView txtresult; 
    private Button btncalculate; 
    private double bmi = 0; 
    private double valueheight = 0; 
    private double valueweight = 0; 
    private String resulttext; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     initControls(); 
     /*TextView tv = new TextView(this); 
     tv.setText("BMI Calculator"); 
     setContentView(tv);*/ 

    } 


    private void initControls() { 
     txtheight = (EditText)findViewById(R.id.txtheight); 
     txtweight = (EditText)findViewById(R.id.txtweight); 
     txtresult = (TextView)findViewById(R.id.txtresult); 
     btncalculate = (Button)findViewById(R.id.btncalculate); 
     //btnreset = (Button)findViewById(R.id.btnreset); 
     btncalculate.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ calculate(); }}); 
     //btnreset.setOnClickListener(new Button.OnClickListener() { public void onClick (View v){ reset(); }}); 
    } 

    private void calculate() { 
     valueheight =Double.parseDouble(txtheight.getText().toString()); 
     valueweight =Double.parseDouble(txtweight.getText().toString()); 
     bmi = (valueweight/(valueheight * valueheight)); 
     //txttipamount.setText(Double.toString(bmi)); 
     if (bmi >= 30) { /* obese */ 
      resulttext = "Your BMI of " + Double.toString(bmi) + " is OBESE."; 
      txtresult.setText(resulttext); 
     } else if (bmi >= 25) { 
      resulttext = "Your BMI of " + Double.toString(bmi) + " is OVERWEIGHT."; 
      txtresult.setText(resulttext); 
     } else if (bmi >= 18.5) { 
      resulttext = "Your BMI of " + Double.toString(bmi) + " is IDEAL."; 
      txtresult.setText(resulttext); 
     } else { 
      resulttext = "Your BMI of " + Double.toString(bmi) + " is UNDERWEIGHT."; 
      txtresult.setText(resulttext); 
     } 
    } 
    private void reset() 
    { 
     txtresult.setText("Your BMI is unknown."); 
     txtheight.setText("0"); 
     txtweight.setText("0"); 
    } 



} 

благодарит заранее.

ответ

4

Чтобы получить ИМТ (индекс массы тела) в метрике, вам необходимо разделить вес в килограммах по высоте в метрах^2. Поэтому, если вы запрашиваете высоту в см, разделите ее на 100, прежде чем выполнять расчет. Пример:

private void calculate() { 
    valueheight =Double.parseDouble(txtheight.getText().toString()); 
    valueweight =Double.parseDouble(txtweight.getText().toString()); 
    Double valueheightmeters; 

    valueheightmeters = valueheight/100; // Converting to meters. 
    bmi = (valueweight/(valueheightmeters * valueheightmeters)); 

    //txttipamount.setText(Double.toString(bmi)); 
    if (bmi >= 30) { /* obese */ 
     resulttext = "Your BMI of " + Double.toString(bmi) + " is OBESE."; 
     txtresult.setText(resulttext); 
    } else if (bmi >= 25) { 
     resulttext = "Your BMI of " + Double.toString(bmi) + " is OVERWEIGHT."; 
     txtresult.setText(resulttext); 
    } else if (bmi >= 18.5) { 
     resulttext = "Your BMI of " + Double.toString(bmi) + " is IDEAL."; 
     txtresult.setText(resulttext); 
    } else { 
     resulttext = "Your BMI of " + Double.toString(bmi) + " is UNDERWEIGHT."; 
     txtresult.setText(resulttext); 
    } 
} 

Надеюсь, что это поможет!

Смежные вопросы