我试图制作一个在摄氏和华氏之间转换的简单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
的{{1}}设置为EditText
,我尝试了数字,但仍然无效。
我检查了问题来自numerdecimal
,但我不知道为什么outputD
无法获得正确的结果。
有人可以帮助我吗?
答案 0 :(得分:4)
当您计算double outputD = (5/9) * (inputD-32);
时,编译器会假定5
和9
为int
s,因此5/9
为零。如果您希望编译器将数字视为doubles
,则应编写double outputD = (5.0/9.0) * (inputD-32);
。这同样适用于第二次转化 - double outputD = (9/5) * inputD + 32;
答案 1 :(得分:0)
5和9都是整数,这就是它总是给出整数的原因 所以5/9总是会给0。 做了 5 / 9.0 或5.0 / 9.0 它肯定会工作
答案 2 :(得分:0)
编译器将除法(5/9)视为整数除法。 因此,第一个结果始终为零。 您可以将其中一个数字设为双倍,如5.0或9.0
double outputD = (5.0/9) * (inputD-32);
或者
double outputD = (5/9.0) * (inputD-32);
或
double outputD = (5.0/9.0) * (inputD-32);