检查double在Java中是否是无限的

检查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类中有两个无限字段:正无限和负无限,您可以检查它们 请注意

我正在为这个家庭作业制作一个简单的计算器,当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
类中有两个无限字段:
正无限
负无限
,您可以检查它们


请注意,整数除以零将抛出一个
算术异常
,因此您的行必须是
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
是一种整数算术,它会产生一个异常。如果您只是在寻找一个专门的异常,请不要捕获一般异常。更好的是,不要捕获异常,因为简单的测试会更好。