私は Android アプリの開発にかなり慣れていないので、簡単なアプリの作成を学んでいます。そこで、BMI 計算機を作ることにしました。ユーザーがスピナーを使用して身長と体重の単位を選択するインターフェイスを作成しました。次に、ボタンをクリックすると、EditText の値の文字列が double に解析されます。ユーザーが選択したスピナー アイテム (身長と体重の単位) も取得されます。setText を使用して適切な値を取得し、ユーザーが入力した値と単位を返すことができました。しかし、値は希望どおりに変換されません。ここでは、if-else ステートメントに問題がある可能性があります。
package com.dirk.myfirstapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView output;
EditText weightInput, heightInput;
Button calculate;
double height, weight, BMI;
String heightInputString, weightInputString, weightUnit, heightUnit;
Spinner heightUnitSpinner, weightUnitSpinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button calculate = (Button) findViewById(R.id.button1);
output = (TextView) findViewById(R.id.textView4);
weightInput = (EditText) findViewById(R.id.editText1);
heightInput = (EditText) findViewById(R.id.editText2);
heightUnitSpinner = (Spinner) findViewById(R.id.spinnerHeight);
weightUnitSpinner = (Spinner) findViewById(R.id.spinnerWeight);
calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//PARSE STRINGS
heightInputString = heightInput.getText().toString();
height = Double.parseDouble(heightInputString);
weightInputString = weightInput.getText().toString();
weight = Double.parseDouble(weightInputString);
weightUnit = weightUnitSpinner.getSelectedItem().toString();
heightUnit = heightUnitSpinner.getSelectedItem().toString();
// CONVERT FIRST TO SI UNITS
// CONVERT WEIGHT TO kilogrammes
if (weightUnit == "lbs") {
weight = weight * 0.453592;
}
// CONVERT HEIGHT TO meters
if (heightUnit == "cm") {
height = height / 100;
} else if (heightUnit == "in") {
height = height * 0.0254;
}
BMI = weight / (height * height);
output.setText("Your BMI is " + BMI);
}
});
}
}