我试图制作一个可在摄氏温度和华氏温度之间转换的简单APP:
我写了两个EditText
,一个用于输入,另一个用于输出,还有两个按钮(toC
和toF
)。
代码如下:
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
将产生错误的结果。我将inputType
的EditText
设置为numerdecimal
,我尝试了数字,但仍然无法正常工作。我检查了问题是否出在
outputD
上,但是我不知道为什么outputD
无法获得正确的结果。有人可以帮我吗?
最佳答案
计算double outputD = (5/9) * (inputD-32);
时,编译器假定5
和9
是int
,因此5/9
为零。如果希望编译器将数字视为doubles
,则应编写double outputD = (5.0/9.0) * (inputD-32);
。同样适用于第二次转换-double outputD = (9/5) * inputD + 32;