import java.io.BufferedReader;
万宁网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
import java.io.IOException;
import java.io.InputStreamReader;
public class Division {
double Division() throws NumberFormatException, IOException, ZeroException {
double dividend = 1, divisor = 1;
System.out.println("请输入被除数:");
BufferedReader in1 = new BufferedReader(
new InputStreamReader(System.in));
dividend = Double.parseDouble(in1.readLine());
System.out.println("请输入除数:");
BufferedReader in2 = new BufferedReader(
new InputStreamReader(System.in));
divisor = Double.parseDouble(in2.readLine());
if(divisor==0)
{
System.out.println("除数不能为零!");
throw new ZeroException("除数不能为零!");
}
else if(divisor0)
{
System.out.println("除数不能小于零!");
throw new ZeroException("除数不能小于零!");
}
return dividend / divisor;
}
public static void main(String[] args) throws NumberFormatException, IOException, ZeroException {
Division d = new Division();
System.out.println("结果为:" + d.Division());
}
}
class ZeroException extends Exception {
public ZeroException() {
super();
}
public ZeroException(String msg) {
super(msg);
}
}
①
public class DividedByZeroException extends Exception {
private static final long serialVersionUID = 4420887449631055240L;
public String getMessage() {
return "除数不能为零";
}
}
上面是异常类DividedByZeroException的代码。
②
import java.util.Scanner;
public class Test {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.print("请输入被除数:");
Scanner scanner1 = new Scanner(System.in);
int input1 = scanner1.nextInt();
System.out.print("请输入除数:");
Scanner scanner2 = new Scanner(System.in);
int input2 = scanner2.nextInt();
System.out.print("两个数相除结果为:");
if (input2 == 0) {
try {
throw new DividedByZeroException();
} catch (DividedByZeroException e) {
e.printStackTrace();
}
} else {
System.out.println(input1 / input2);
}
scanner1.close();
scanner2.close();
}
}
上面是测试类代码和运行结果,麻烦看一下是否能满足要求。
这可从两个方面谈起: 一、当被除数是零,除数也是零时,我们可写成0÷0=X的形式,看商X是什么?根据乘法与除法互为逆运算的关系有:被除数=除数×商,这里除数已为零,商X无论是什么数(是正数、负数、零)、与零相乘都等于零。即0=0×X,这样商X是不固定的。X是任何数与零相乘都等于零。我们知道四则运算的结果是唯一的,这就破坏了四则运算结果的唯一性。在这种情况下,我们简单地说:“被除数和除数都为零时,不能得到固定的商。” 二、当被除数不为零时,而除数为零时的结果看,我们可写成5÷0=X,商X无论是什么数,与除数“0”相乘都得零,而不会得5,即0×X≠5或其他不是零的数。我们简单地说:“当被除数为零,而除数是零时,用乘除法的关系来检验,是‘还不回原的’”。所以,“0”在4种运算中,就是不可以以除数的身份出现。 鉴于以上两种情况:一是零做除数不能得到固定的商;二是零做除数还不回原。因此说:“零做除数没有意义”或“规定零不能做除数”。
1): throws ArithmeticException
2:)new
3:)ArithmeticException
代码块里抛异常使用的是throw 关键字, 方法体抛异常使用的是throws 关键字
使用try catch 用于捕获抛出的异常, 并试图进行处理
完整的参考代码
public class TestThrow {
static int x = 0;
static int y = 0;
public static void divide() throws ArithmeticException { // 方法定义抛出异常
if (x != 0) {
y = 100 / x;
} else {
throw new ArithmeticException("除数不能为零!");//抛出异常
}
}
public static void main(String[] args) {
try {
divide();
} catch (ArithmeticException e) {//捕获方法抛出的异常,并在catch里打印出来
e.printStackTrace();
}
}
}
try {
System.out.println(12/0);
} catch (java.lang.ArithmeticException e) {
System.err.println("除数不能为0");
}
抛出异常即可。
java中,如果int/int中除数为0,会抛出异常java.lang.ArithmeticException: / by zero,这个不容易理解!但如果是浮点型,就不会报异常了!
总结如下:
0.0/0.0 得到的结果是NaN(not an number的简称,即"不是数字")。通过Double.isNaN(double x)来判断。如果返回true就打印除数不能为零。
正数/0.0 得到的结果是正无穷大,即Infenity
负数/0.0 得到的结果是负无穷大,即Infenity。通过Double.isInfinite(double x)来判断。