- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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;
}
}
在运行时,我收到错误消息
Exception in thread "main" java.lang.ArithmeticException: / by zero
引用第 25 行(我的 for 循环条件)。
在我尝试将 digit 的值类型转换为 int 之前,循环工作正常,但我不确定为什么这会导致循环的任何部分除以零。我已经遍历了有关使用有理表达式的条件的所有可能性,并且无法推断出其中任何分母都将设置为零的偶然性。无论输入什么数字,我都会收到此错误。如果不是因为我的教授提供了一个数字,其值超过了他的一个测试用例中可以存储在 int 中的数字,我根本不会选择将数字保存为 double 。该程序在类型转换之前运行良好,并为所有其他测试用例提供了正确答案。
最佳答案
你在这做
(number * 10) /i !=0
其中 number 是 double。
不建议将 float 用于比较,因为它们的存储方式(以尾数和指数形式)。所以,如果这个条件返回真,你就幸运了。
因为你的循环有点像永无止境的循环。你得到算术异常的原因是你在这个无限循环中将 i 乘以 10。 “i”达到 32 位的“整数”限制并溢出,最终使所有这 32 位为 0。
实际上,i=0 和以下两个都抛出被零除异常
(number * 10) /i
和
(number % i) - digit)/(i / 10)
关于java - 使用 Typecaste (Java) 除以零异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32730981/
迭代 JsonData通过 foreach 获取 IDictionary 枚举器而不是 IList 枚举器。 foreach (var jsonEntry in jsonData) 这会导致我的代码抛
long value = 0x88888888 ; int i = (int) (value & 0xff); 上述表达式的求值是如何发生的?是吗 int i = (int)value & (int)
类(class)TypeCast可以追溯到 2004 年,因此 Haskell 相当“古老”(尽管仍然相当出色)。我的问题是:如果今天在最先进的 GHC 中重新实现 [最好是 7.6,但是继续,使用
我有一个 objDataModel 类型的变量 UDataModel 继承自 AbstractDataModel public class AbstractDataModel { intern
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我在计算小费金额时遇到类型转换转换问题。 const double TIP_PERCENTAGE = .15; cout (TIP_PERCENTAGE * 100.00); return 0; 我得
我在使用 Lua 和 C++(使用 LuaWrapper)时遇到了一些问题。假设我有这些类(class): class Bar{...}; class Foo { ... std::m
我想像这样设置一个散列: {:a => Float, :b => String} 这样我就可以将它用作针对另一个散列的“类型转换”过滤器。例如: def parse_hash(input_hash)
假设你有一个对象类型: Type Person = { name?: string; color?: string; address? string; } 但是你想将该类型更改为以下类型,
假设你有一个对象类型: Type Person = { name?: string; color?: string; address? string; } 但是你想将该类型更改为以下类型,
我在 C# 中的 TypeCast 转换中遇到了一些意外行为。 尝试转换时.. float f = 123124334234234.34F; 转换为整数,如下所示: int i = (int)f; 我
我正在尝试展平列表列表,同时确保最终对象列表的类型正确。这是一个(抽象的)示例: class Space { public List ContainedSpaces {
我必须声明 Realm 字符串属性来保存从 API 获取的值,但问题是,我不知道来自服务器的数据类型。有时我会得到 String 值,有时会得到 Int 值。现在我将如何将数据保存到 Realm 。
这是我的代码: 1 #include 2 3 struct Foo; 4 5 struct Bar { 6 Foo *foo; 7
我正在为我的 SQL 数据库逻辑使用 IDbCommand 和 IDbDataParameter 接口(interface),但意识到由于接口(interface)限制,我无法获取 sqlComman
有没有办法在 C# 中执行此操作? private void Caller() { MyControl c = new MyControl(); Callee(ref c);
谁能告诉我我做错了什么。我可以将 y 类型转换为 long,但对 x/y 无效。 class Test { long convert(int x, float y) { //return (l
import java.util.Scanner; public class SumDigits { public static void main(String[] args) { // T
我有代码: import { createConnection } from 'mysql'; import { promisify } from 'util'; export default cla
我正在查看这段代码,但语法有问题: struct Instance { typedef glm::vec3(*OffsetFunc)(float); OffsetFunc CalcOf
我是一名优秀的程序员,十分优秀!