当前位置: 首页 > 知识库问答 >
问题:

用Typecaste(Java)除以零异常

夹谷星剑
2023-03-14
import java.util.Scanner;


public class SumDigits {

public static void main(String[] args)
{
    // TODO Auto-generated method stub

    Scanner input = new Scanner(System.in);

    // prompt the user to enter a value and store it as the integer called number
    System.out.print("Enter an integer: ");
    double number = Math.abs(input.nextDouble());

    System.out.println("The sum of the digits is " + sumNumbers(number));

    input.close();
}
public static int sumNumbers (double number)
{

    int sum = 0;

    for (int i = 10, digit = 0; (number * 10) /i !=0; i *= 10, digit = (int)((number % i) - digit)/(i / 10))
    {
        sum += digit;
    }

    return sum;
}
}

参考第25行(我的for循环条件)。

循环工作得很好,直到我尝试将Digit的值转换为int,我不确定为什么这会导致循环的任何部分将某物除以零。我已经讨论了所有关于使用有理表达式的条件的可能性,不能推导出任何分母都为零的偶然性。无论输入什么数字,我都会得到这个错误。如果不是因为我的教授在一个测试用例中提供了一个数值超过了可以存储在int中的数值,我根本不会选择将number保存为double。该程序在类型转换之前运行良好,并为所有其他测试用例提供了正确的答案。

共有1个答案

闻枫
2023-03-14

你在做什么

(number * 10) /i !=0

其中数字是双倍。

浮点数不推荐用于比较,因为它们的存储方式(尾数和指数形式)。所以,如果这个条件返回为真,就认为自己很幸运。

(number * 10) /i 
(number % i) - digit)/(i / 10)
 类似资料:
  • 我做java已经4个月了,所以我还是一个业余爱好者。只是想搞定一些hwk。我似乎找不到正确的技巧来让我的分母通过拒绝文本数据和零,同时保持循环错误消息来很好地发挥作用。另一个问题是,无论分子/分母是什么,我的商都是0.0。有很多问题,任何建议都很感谢。指示如下: --这个程序接受用户输入的(int)分子和(int)分母,然后计算并显示(双)商。 --如果用户为分子输入的是文本而不是数字,则显示一条

  • 问题内容: 我有一个I2C设备,需要两个输入:分母和分子。两者均被写入不同的地址,因此不进行实际计算()。问题在于,I2C器件上可能会发生被零除的情况,因此需要检查被零除的错误。理想情况下,如果除法是通过Java代码完成的,则将发生完全相同的事情。 目前,我已经绑定了一个用于进行除法运算的未使用变量,但是我担心它会被优化: 当然,有更好的方法! 问题答案: 你应该 不是 抛出一个Arithmeti

  • 为什么这段代码不抛出?看一看: 我不知道!

  • 结果只是显示无穷大,当我尝试除以0时,它不打印行。

  • 问题内容: 为什么下面的Java代码 打印’Infinity’且未定义。这在数学上不是错吗? 问题答案: 在数学中,有许多支持算术的不同结构。最突出的数字(例如自然数,整数和实数)不包括无穷大。在那些系统中,不支持除以零。 其他系统的确包含至少一个无穷大。参见,例如,真实的投影线。它确实允许被零除。 只有一种方法可以知道在特定系统中数学定义或未定义的内容-研究该系统。 类似地,操作是可交换的(a

  • 问题内容: 为什么这段代码没有抛出?看一看: 我不知道! 问题答案: 您为什么不能自己检查一下并抛出异常(如果您要的话)。