public class TestAgrs {
public static void main(String [] agrs ) {
if(agrs.length<3||agrs.length>3) {
System.out.println(
"输入格式错误!应该输入:java TestAgrs \"n1\" \"op\" \"n1\"");
System.exit(0);
}
double d1 = 0,d2 = 0;
int sign = 0;//用于判断异常的出现,1代表出现
try{
d1 = Double.parseDouble(agrs[0]);
}
catch(NumberFormatException ax) {
System.out.println("你输入的第一个运算数格式不对,请输入正确的运算数!");
ax.printStackTrace();
sign = 1;
}
try {
d2 = Double.parseDouble(agrs[2]);
}
catch(NumberFormatException ax) {
System.out.println("你输入的第二个运算数格式不对,请输入正确的运算数!");
ax.printStackTrace();
sign = 1;
}
if(sign == 1)
System.exit(0);
if(agrs[1].equals("+"))
System.out.println(d1+d2);
else if(agrs[1].equals("-"))
System.out.println(d1-d2);
else if(agrs[1].equals("x"))
System.out.println(d1*d2);
else if(agrs[1].equals("/"))
try {
System.out.println(d1/d2);}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
else {
System.out.println("error operator" );
System.exit(0);
}
}
}
这是我写的用于两个浮点数简单的加减乘除的计算程序,可是有一点不太明白,就是为什么当我把除数设置为0后运行时我设置的第三个异常处理不能答应出来,屏幕上打印infinity,也就是下面这段代码打印不出来
else if(agrs[1].equals("/"))
try {
System.out.println(d1/d2);}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
刚刚学java,好多东西不太懂,麻烦指教一下,谢谢!!
public static void main(String [] agrs ) {
if(agrs.length<3||agrs.length>3) {
System.out.println(
"输入格式错误!应该输入:java TestAgrs \"n1\" \"op\" \"n1\"");
System.exit(0);
}
double d1 = 0,d2 = 0;
int sign = 0;//用于判断异常的出现,1代表出现
try{
d1 = Double.parseDouble(agrs[0]);
}
catch(NumberFormatException ax) {
System.out.println("你输入的第一个运算数格式不对,请输入正确的运算数!");
ax.printStackTrace();
sign = 1;
}
try {
d2 = Double.parseDouble(agrs[2]);
}
catch(NumberFormatException ax) {
System.out.println("你输入的第二个运算数格式不对,请输入正确的运算数!");
ax.printStackTrace();
sign = 1;
}
if(sign == 1)
System.exit(0);
if(agrs[1].equals("+"))
System.out.println(d1+d2);
else if(agrs[1].equals("-"))
System.out.println(d1-d2);
else if(agrs[1].equals("x"))
System.out.println(d1*d2);
else if(agrs[1].equals("/"))
try {
System.out.println(d1/d2);}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
else {
System.out.println("error operator" );
System.exit(0);
}
}
}
这是我写的用于两个浮点数简单的加减乘除的计算程序,可是有一点不太明白,就是为什么当我把除数设置为0后运行时我设置的第三个异常处理不能答应出来,屏幕上打印infinity,也就是下面这段代码打印不出来
else if(agrs[1].equals("/"))
try {
System.out.println(d1/d2);}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
刚刚学java,好多东西不太懂,麻烦指教一下,谢谢!!
System.out.println(d1/d2);}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
这段代码不就是的吗?可是就是打印不出来,当除数是0时??
这个出不了异常 0的话就是溢出!!!
代码换掉!!!自己判断除数是否为零!!!
if(d2==0.00){
System.out.println("除数不能为零!!!");
}else{
System.out.println(d1/d2);
}
public static strictfp void main(String args[]) {
int a=1;
int b=0;
try{
a/b;
}catch(Exception e){
System.out.println("除数不能为0");
} }
输出 除数不能为0 没有问题 ~~
double和float的被除数都可以为0的原因是java中有三个特殊的浮点类型,就是NAN,负无穷大和无穷大。用来表示浮点型操作出错或者是溢出的某些情况。比如负数的平方根就会是NAN
所以你要明白 看起来是0 其实他不是0
public class Test {
public static void main(String [] agrs) {
int i=1,j=0;
try{
int t = i/j;
}
catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
}
}
这里面的catch(Exception ax) {
System.out.println("除数不能为零!!!");
ax.printStackTrace();
}
就能被打印出来,可是为什么上面的就打印不了呢???
if(d2==0.00){
System.out.println("除数不能为零!!!");
}else{
System.out.println(d1/d2);
}
这个办法来处理,有没有更好的办法呢?
如有错误 概不负责
我自己的理解:整数 5/0 未定义它的值是多少,产生java.lang.ArithmeticException: / by zero异常
而 5/0.0;这个是浮点数的运算,定义好的为无穷大,也就是Infinity,所以System.out.println(d1/d2);
就打印出Infinity,而不会产生异常