这是坚果壳中的问题。我用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;
}
}**
答案 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;
}