检查double在Java中是否是无限的
我正在为这个家庭作业制作一个简单的计算器,当Java除以0时返回“无穷大” 当我得到无穷大时,我需要显示一些错误消息。问题是我不知道该怎么做检查double在Java中是否是无限的,java,Java,我正在为这个家庭作业制作一个简单的计算器,当Java除以0时返回“无穷大” 当我得到无穷大时,我需要显示一些错误消息。问题是我不知道该怎么做 double result; result = 4/0; //if result == infinity then some message - need help with this 请看它是否等于双正无穷大 double result; result = 4.0 / 0.0; 在Double类中有两个无限字段:正无限和负无限,您可以检查它们 请注意
double result;
result = 4/0;
//if result == infinity then some message - need help with this
请看它是否等于双正无穷大
double result;
result = 4.0 / 0.0;
在
Double
类中有两个无限字段:正无限
和负无限
,您可以检查它们
请注意,整数除以零将抛出一个
算术异常
,因此您的行必须是4.0/0
、4/0.0
或4.0/0.0
,因为4和0是整数,因此会产生整数数学。以上代码生成
ArithmeticException: / by zero
您可以在try/catch块中捕获此异常。您可以使用
Double.isInfinite(Double)
这里有一个这种错误称为异常。可以使用try-catch块捕获此异常
try{
result = 4/0;
}
catch(ArithmeticException e){
System.out.println("You divided by zero");
}
您可以阅读有关异常处理的内容。Jacek Kwiecień请尝试以下代码
double result;
try{
result=4.0/0.0;
}catch(ArithmeticException e){
System.out.println("Math error "+ e.getMessage())
}
`重新提出一个非常古老的问题,因为它出现在我的Java类中。因此,我确信您已经按照他们的建议尝试了try/catch,但您发现,与我一样,它与
Double
不兼容。try/catch with arithmetricexception在Double
或Float
上不起作用,因为它们返回“无穷大”,而不是返回异常。(注意,我的答案不是答案,所以我对它进行了深入研究)
我拼凑了几个不同的问题/答案,提出了以下试验
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.");
}
}
}
上面的代码应该会给出“答案是无穷大”的结果。至少对我来说是这样的,因为它是一个双
对于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.");
}
}
}
我相信,这是他不想要的。他想看到一个错误。检查除数是否为零。显示错误消息。你想得到无穷大而不是一开始就停止除法,这有什么原因吗?是的,删除了我的评论,尽管它在数学上仍然不正确,但这是两个独立的问题:处理无穷大和处理零除法(如果操作数是双精度的,这不是错误)
4.0/0.0
=>Infinity
,4/0
是一种整数算术,它会产生一个异常。如果您只是在寻找一个专门的异常,请不要捕获一般异常。更好的是,不要捕获异常,因为简单的测试会更好。