当数字除以0时,试图让计算器返回0而不是错误消息?

时间:2012-02-09 17:27:59

标签: java

这是坚果壳中的问题。我用Java制作了一个基本的计算器,我试图让计算器在输入数字时返回0并且除以0.每次我不断收到错误信息!

class Calculator
{

long sum;

public void evaluate( char action, long number )
{
    if (action == '+')
    {
        sum = number + number;

    }

    if (action == '-')
    {
        sum = number - number;

    }

    if (action == '*')
    {
        sum = number * number;

    }

    if (action == '/')
    {
        sum = number / number;

    }

    **if (sum == number / 0)
    {
        sum = 0;
    }
}**

6 个答案:

答案 0 :(得分:1)

使用ternary运营商:

if (action == '/') {
    sum = number == 0 ? 0 : number / number;  // <-- isn't that just 1 ?  
}

答案 1 :(得分:0)

我只是将这个逻辑添加到您的部门代码中:

if (action == '/')
{
    if (number == 0)
    {
        sum = 0;
    } else {
        sum = number / number;
    }
}

另外,为什么每次操作使用相同的数字?减法运算符将始终返回0。如果您在计算器中使用此代码,只需检查分母是否为0

答案 2 :(得分:0)

if (action == '/')
{
    if(number2 == 0)
    {
        System.out.println("You cannot divide by 0!");
        return;
    }
    sum = number1 / number2;
}

答案 3 :(得分:0)

IEEE 754标准不仅包括由符号和幅度组成的正数和负数,还包括正负零,正无穷大和负无穷大,以及特殊的非数字值(以下简称为NaN)。 NaN值用于表示某些无效操作的结果,例如将零除以零。 float和double类型的NaN常量预定义为Float.NaN和Double.NaN。

你需要添加条件,确保你没有除以ZERO。

if(secondnumber == 0)
    {

        return;
    }

答案 4 :(得分:0)

为了完整起见,为什么不捕获异常(并使用java编码约定)?

if (action == '/') {
     try {
        sum = number / number;
     catch (ArithmeticException e) {
        //log error
        sum = 0;
     }
}

这里的奖励是它可以处理可能发生的任何其他错误。

答案 5 :(得分:0)

简单检查:

public double div(char action, int numerator, int dinominator){

  double ans=0;

  if(action == '/'){

    if(dinominator == 0){
         ans=0;
    } else {
         ans = numerator / dinominator;
    }

  }
  return ans;
}