我正在为这个家庭作业制作一个简单的计算器,Java正在回归" Infinity"除以0。
当我无限时,我需要显示一些错误信息。问题是我不知道该怎么做
double result;
result = 4/0;
//if result == infinity then some message - need help with this
答案 0 :(得分:51)
您可以使用Double.isInfinite(double)
答案 1 :(得分:5)
以上代码生成
ArithmeticException: / by zero
您可以在try / catch块中捕获此异常。
答案 2 :(得分:1)
请查看它是否等于Double.POSITIVE_INFINITY
double result;
result = 4.0 / 0.0;
答案 3 :(得分:1)
Double
课程中有两个无限远字段:POSITIVE_INFINITY
和NEGATIVE_INFINITY
,您可以查看。
请注意,整数除以零会抛出ArithmeticException
,因此您的行必须是4.0/0
,4/0.0
或4.0/0.0
,因为4和0是整数,因此结果在整数数学中。
答案 4 :(得分:0)
JacekKwiecień尝试此代码
double result;
try{
result=4.0/0.0;
}catch(ArithmeticException e){
System.out.println("Math error "+ e.getMessage())
}
`
答案 5 :(得分:0)
恢复一个超级老问题,因为它出现在我的Java类中。所以我确定你像他们所建议的那样尝试了try / catch,但你发现,和我一样,它并没有与Double
一起使用。带有ArithmeticException的try / catch不会对Double
或Float
起作用,因为它们会返回" Infinity"而不是返回异常。 (注意,删除了myold"回答"因为它不是答案)。
在此基础上拼凑了几个不同的问题/答案,我提出了以下试验。
public class trial
{
public static void main(String[] args)
{
double a;
try {
a = 4/0;
System.out.println(" The answer is " +a);
} catch(ArithmeticException e) {
System.out.println(" You can't divide by zero. Please try again.");
}
}
}
上面的代码应该给你结果"答案是Infinity。"至少它对我有用,因为它是double
。
使用int
,它不需要下面的if
语句,因为它会抛出异常。但由于它是Double
,下面的if
语句会导致它抛出一个catch
将......好......捕获的异常。
public class trial
{
public static void main(String[] args)
{
double a;
try {
a = 4/0;
// if statement to throw an AtithmeticException if ans equals infinity
if(a == Double.POSITIVE_INFINITY){
throw new ArithmeticException();
}
else{
System.out.println(" The answer is " +a);
}
} catch(ArithmeticException e) {
System.out.println(" You can't divide by zero. Please try again.");
}
}
}
答案 6 :(得分:-1)
这种错误称为异常。您可以使用try-catch块来捕获此异常。
try{
result = 4/0;
}
catch(ArithmeticException e){
System.out.println("You divided by zero");
}
您可以阅读有关异常处理here的信息。