我试图制作一个可在摄氏温度和华氏温度之间转换的简单APP:

我写了两个EditText,一个用于输入,另一个用于输出,还有两个按钮(toCtoF)。

代码如下:

public class MainActivity extends ActionBarActivity {

private EditText EditText_input;
private EditText EditText_output;

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

    EditText_input = (EditText) findViewById(R.id.input);
    EditText_output = (EditText) findViewById(R.id.output);

    Button toC = (Button) findViewById(R.id.c);
    toC.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String inputS = EditText_input.getText().toString();
            double inputD = Double.parseDouble(inputS);
            double outputD = (5/9) * (inputD-32);
            String outputS = String.valueOf(outputD);

            //Toast.makeText(MainActivity.this,String.valueOf(outputD),Toast.LENGTH_LONG).show();
            EditText_output.setText(outputS, TextView.BufferType.EDITABLE);
        }
    });

    Button toF = (Button) findViewById(R.id.f);
    toF.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            String inputS = EditText_input.getText().toString();
            double inputD = Double.parseDouble(inputS);
            double outputD = (9/5) * inputD + 32;
            String outputS = String.valueOf(outputD);

            EditText_output.setText(outputS, TextView.BufferType.EDITABLE);
        }
    });

}


单击按钮toC后,它总是产生0.0,而单击按钮toF将产生错误的结果。我将inputTypeEditText设置为numerdecimal,我尝试了数字,但仍然无法正常工作。

我检查了问题是否出在outputD上,但是我不知道为什么outputD无法获得正确的结果。

有人可以帮我吗?

最佳答案

计算double outputD = (5/9) * (inputD-32);时,编译器假定59int,因此5/9为零。如果希望编译器将数字视为doubles,则应编写double outputD = (5.0/9.0) * (inputD-32);。同样适用于第二次转换-double outputD = (9/5) * inputD + 32;

07-27 23:32