0

我这里有个问题。我必须制作一个程序来检查信用卡号是否有效,使用校验和。我应该从第二个到最后一个数字相乘每隔一个数字,然后将乘积相加,然后将未相乘的数字也加到该总和上。除法时结果应为 0。但是,我的程序有问题。当我输入大数字时,值会改变,最后我得到浮点异常(核心转储)。当我输入较小的数字时,有时会起作用,有时会不起作用。请帮帮我。

谢谢您的帮助。请解释这个问题,以便我以后避免它。

4

2 回答 2

3

我认为在将 i 迭代到较大的 cardNum 时可能会遇到问题,因为 cardNum 很长,可以容纳大量数字,但 int i 只是一个相对较小的 int。

要解决此问题,请尝试将 cardNum 保存为字符串,从中提取每个数字并将它们解析为 int。然后,您可以将它们相乘和相加,而无需处理表示巨大的数字。

于 2014-02-07T00:25:05.123 回答
0

cardnum 需要是一个字符串而不是一个数字,你正在循环它期望得到每个数字。您的 for 循环将为您提供从 1 到信用卡号的所有数字(一个长循环)

于 2014-02-07T00:28:28.713 回答