1

私は 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);


                }
            });

        }



    }
4

1 に答える 1

1

Strings を比較するときは、Object.equals("string"); を使用します。比べる。「==」を使用しないでください

元:

// CONVERT HEIGHT TO meters
                    if (heightUnit.equals("cm")) {
                height = height / 100;
                    } else if (heightUnit.equals("in")) {
                        height = height * 0.0254;
                    }
于 2013-05-10T18:52:53.383 に答える