求大神看看这段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);
}

}

它不会捕获处理异常,什么情况???求指点!
展开
 我来答
jianiter
2013-10-06 · 超过21用户采纳过TA的回答
知道答主
回答量:78
采纳率:100%
帮助的人:58.7万
展开全部
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);
}
}
追问
大神  那只能做整数除法吗
追答
不是哦,你可以换种方式实现捕获:
System.out.print("输入第二个数: ");
number2 = Fun.nextFloat();
if(number2==0){
System.out.println("第二个数是零,不能做除法");
System.exit(-1);
}
攒眉柳妆成0
2013-10-06 · TA获得超过187个赞
知道小有建树答主
回答量:204
采纳率:100%
帮助的人:168万
展开全部
除数为0的异常在java中是没有的,
证明这个没有,只要你catch总异常
try{}
catch(Exception e)
{}
用这个都不会有异常抛出,所以这个异常是不存在的
所以这个异常需要你自己定义或在代码中自己判断
望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
superdzm722
2013-10-06 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:100
采纳率:0%
帮助的人:73.5万
展开全部
在java除法中,允许浮点数运算时除数为零,所得结果是Infinity,所以不会引发异常,自然就不会被捕获。如果改成int型,就可以出现你要的效果了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lion9909
2013-10-06
知道答主
回答量:27
采纳率:0%
帮助的人:15万
展开全部
对于除数a和被除数b (b=0),
(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类型的就可以了,给分喔~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式