我只是好奇这个:
1/0在Java中进行评估时,会发生以下异常:
线程"main"中的异常java.lang.ArithmeticException:/在Foo.main中为零(Foo.java:3)
但是1/0.0被评估为Infinity.
public class Foo {
public static void main (String[] args) {
System.out.println(1/0.0);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
我想知道为什么这段代码在没有Throwing的情况下执行RuntimeException(完全是ArithmethicException):
码:
public class Proba {
public static void main(String[] args) {
Double d = new Double(5.0);
try {
d = d / 0;
} catch (Exception e) {
System.out.println("Error division by zero!");
}
System.out.println("d = " + d);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
d = Infinity
Run Code Online (Sandbox Code Playgroud)
我想知道它是怎么回事.
我的java版本是:
C:\Documents and Settings\Admintemp>java -version
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) Client VM (build 21.0-b17, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)
我正在制作一个Android计算器,当我除以零时,我得到9.223372E + 18.为什么不显示NaN或崩溃?我认为它导致9.223372E + 18,因为这是最大可能的双值,因为我除以零并使用双数据类型.由于它会让用户感到困惑,我该如何解决这个问题呢?
大家好,感谢您的所有回复.我很感激.我在下面发布了我的代码.
public class CFM extends ActionBarActivity {
Double cfm, ac, volume;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cfm);
EditText e1 = (EditText) findViewById(R.id.editText1);
EditText e2 = (EditText) findViewById(R.id.editText2);
TextView t1 = (TextView) findViewById(R.id.editText3);
t1.setEnabled(false);
t1.setFocusable(false);
e1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
EditText e1 = (EditText)findViewById(R.id.editText1);
EditText e2 …Run Code Online (Sandbox Code Playgroud)