Java 每次我除以,我得到0.0
我正在尝试制作一个可以在人与人之间分摊账单的应用程序,但每当我尝试在代码中分摊两个数字时,它总是给我0.0。为什么会这样 代码如下:Java 每次我除以,我得到0.0,java,android,Java,Android,我正在尝试制作一个可以在人与人之间分摊账单的应用程序,但每当我尝试在代码中分摊两个数字时,它总是给我0.0。为什么会这样 代码如下: public class MainActivity extends Activity { public int x = 0; public double y = 1.00; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns
public class MainActivity extends Activity {
public int x = 0;
public double y = 1.00;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Button
Button btn = (Button) findViewById(R.id.button);
//EditText
EditText nop = (EditText) findViewById(R.id.editText);
EditText cob = (EditText) findViewById(R.id.editText2);
try{
x = Integer.valueOf(nop.getText().toString());
} catch (NumberFormatException e) {
x = 0;
}
try{
y = Double.valueOf(cob.getText().toString());
} catch (NumberFormatException e) {
y = 1.00;
}
//TextView
final TextView tv = (TextView) findViewById(R.id.textView);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Double z = (y / x);
tv.setText("You will each pay:" + (z));
}
});
}
}
我的猜测是,您不会在单击后计算值。try/catch的代码应该是onclick方法。单击按钮从
EditText
获取值,否则您将无法获取输入的值,因为获取x
和y
值的代码将在您启动应用程序后立即执行,不再进行进一步获取
这样做
final TextView tv = (TextView) findViewById(R.id.textView);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
x = Integer.valueOf(nop.getText().toString());
} catch (NumberFormatException e) {
x = 0;
}
try{
y = Double.valueOf(cob.getText().toString());
} catch (NumberFormatException e) {
y = 1.00;
}
Double z = (y / x);
tv.setText("You will each pay:" + (z));
}
});
如果以下代码中存在异常,则x将为零
try {
x = Integer.valueOf(nop.getText().toString());
} catch (NumberFormatException e) {
x = 0;
}
现在,由于这个异常,您除以零将得到无穷大而不是0.0。另外,请确保参与者的默认数量为1而不是零。如果将其设置为零,则最好不要进行除法,并强制用户输入正确的数字,否则必须捕获除法为零的异常
public class MainActivity extends Activity {
public int x = 1;
public double y = 1.00;
public EditText nop;
public EditText cob;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Button
Button btn = (Button) findViewById(R.id.button);
//EditText
nop = (EditText) findViewById(R.id.editText);
cob = (EditText) findViewById(R.id.editText2);
//TextView
final TextView tv = (TextView) findViewById(R.id.textView);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
x = Integer.valueOf(nop.getText().toString());
} catch (NumberFormatException e) {
x = 1;
}
try{
y = Double.valueOf(cob.getText().toString());
} catch (NumberFormatException e) {
y = 1.00;
}
Double z = (y / x);
tv.setText("You will each pay:" + (z));
}
});
}
}
可能您的
Integer.valueOf
-方法会引发异常。那么你总是有0。0@mrT当你除以0时,你得不到0.0。您将得到NaN
或无穷大
。在catch语句中赋值x=0
有点危险,因为这可能导致被零除,这将返回被零除异常。@MarkoTopolnik您的权利!