2014-02-07 137 views
0

我在这里有一个问题。我必须制作一个程序,检查信用卡号码是否有效使用校验和。我应该乘以从第二位数字到最后一位数字的每隔一位数字,然后添加产品,然后将未乘以该数字的数字相加。分割后的结果应该为0。不过,我的程序在这里有一个问题。当我输入大数字时,数值会改变,最后我会得到浮点异常(核心转储)。当我输入较小的数字时,它有时会起作用,有时不起作用。请帮助我。程序不能按预期工作

谢谢你的帮助。请解释这个问题,以便稍后避免。

+1

你的一个数学计算产生的数字太大或太小都不适合你选择的数据类型。找出为什么。 –

+0

说'浮点异常',但我没有看到任何浮点数的东西 – pm100

+0

@ pm100没关系。例如,整数除以零就可以做到这一点。 – tommyo

回答

3

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

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

+0

是的,这是问题所在。谢谢。 – AJPennster

0

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