求大神看看这段java代码哪里有问题啊
代码如下importjava.util.Scanner;publicclassDivision{publicstaticvoidmain(Stringargs[]){fl...
代码如下
import java.util.Scanner;
public class Division {
public static void main(String args[]){
float number1 = 0,number2=0,result=0;
Scanner Fun = new Scanner(System.in);
try{
System.out.print("输入第一个数:");
number1=Fun.nextFloat();
System.out.print("输入第二个数: ");
number2=Fun.nextFloat();
result=number1/number2;
}
catch(ArithmeticException e){
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
catch(NumberFormatException e){
System.out.println("不是有效的输入数据");
System.exit(-1);
}
System.out.println(number1+"/"+number2+"="+result);
}
}
它不会捕获处理异常,什么情况???求指点! 展开
import java.util.Scanner;
public class Division {
public static void main(String args[]){
float number1 = 0,number2=0,result=0;
Scanner Fun = new Scanner(System.in);
try{
System.out.print("输入第一个数:");
number1=Fun.nextFloat();
System.out.print("输入第二个数: ");
number2=Fun.nextFloat();
result=number1/number2;
}
catch(ArithmeticException e){
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
catch(NumberFormatException e){
System.out.println("不是有效的输入数据");
System.exit(-1);
}
System.out.println(number1+"/"+number2+"="+result);
}
}
它不会捕获处理异常,什么情况???求指点! 展开
5个回答
展开全部
ArithmeticException是捕获int类型的,所以,输入时,应该使用nextInt,下面是修改后的代码,请参考:
package demo;
import java.util.Scanner;
public class Division {
public static void main(String args[]) {
int number1 = 0, number2 = 0, result = 0;
Scanner Fun = new Scanner(System.in);
try {
System.out.print("输入第一个数:");
number1 = Fun.nextInt();
System.out.print("输入第二个数: ");
number2 = Fun.nextInt();
result = number1 / number2;
}
catch (ArithmeticException e) {
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
catch (NumberFormatException e) {
System.out.println("不是有效的输入数据");
System.exit(-1);
}
System.out.println(number1 + "/" + number2 + "=" + result);
}
}
package demo;
import java.util.Scanner;
public class Division {
public static void main(String args[]) {
int number1 = 0, number2 = 0, result = 0;
Scanner Fun = new Scanner(System.in);
try {
System.out.print("输入第一个数:");
number1 = Fun.nextInt();
System.out.print("输入第二个数: ");
number2 = Fun.nextInt();
result = number1 / number2;
}
catch (ArithmeticException e) {
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
catch (NumberFormatException e) {
System.out.println("不是有效的输入数据");
System.exit(-1);
}
System.out.println(number1 + "/" + number2 + "=" + result);
}
}
追问
大神 那只能做整数除法吗
追答
不是哦,你可以换种方式实现捕获:
System.out.print("输入第二个数: ");
number2 = Fun.nextFloat();
if(number2==0){
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
展开全部
除数为0的异常在java中是没有的,
证明这个没有,只要你catch总异常
try{}
catch(Exception e)
{}
用这个都不会有异常抛出,所以这个异常是不存在的
所以这个异常需要你自己定义或在代码中自己判断
望采纳。
证明这个没有,只要你catch总异常
try{}
catch(Exception e)
{}
用这个都不会有异常抛出,所以这个异常是不存在的
所以这个异常需要你自己定义或在代码中自己判断
望采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在java除法中,允许浮点数运算时除数为零,所得结果是Infinity,所以不会引发异常,自然就不会被捕获。如果改成int型,就可以出现你要的效果了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于除数a和被除数b (b=0),
(1)如果二者均为int型(long也是int型),结果会抛出异常:java.lang.ArithmeticException: / by zero
(2)如果其中有一个为double或者float型,结果则是Infinity
(1)如果二者均为int型(long也是int型),结果会抛出异常:java.lang.ArithmeticException: / by zero
(2)如果其中有一个为double或者float型,结果则是Infinity
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-10-06
展开全部
把第二个异常去掉看看
追问
去了也不行...结果还是infinity
追答
float number1 = 0,number2=0,result=0;
上面的一行都修改为int类型的就可以了,给分喔~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询