2014-02-07 139 views
0

我在這裏有一個問題。我必須製作一個程序,檢查信用卡號碼是否有效使用校驗和。我應該乘以從第二位數字到最後一位數字的每隔一位數字,然後添加產品,然後將未乘以該數字的數字相加。分割後的結果應該爲0。不過,我的程序在這裏有一個問題。當我輸入大數字時,數值會改變,最後我會得到浮點異常(核心轉儲)。當我輸入較小的數字時,它有時會起作用,有時不起作用。請幫助我。程序不能按預期工作

謝謝你的幫助。請解釋這個問題,以便稍後避免。

+1

你的一個數學計算產生的數字太大或太小都不適合你選擇的數據類型。找出爲什麼。 –

+0

說'浮點異常',但我沒有看到任何浮點數的東西 – pm100

+0

@ pm100沒關係。例如,整數除以零就可以做到這一點。 – tommyo

回答

3

我認爲你可能會遇到一個問題,當我迭代到一個大的cardNum,因爲cardNum很長,可以容納大量的數字,但int我只是一個int相對較小。

要解決此問題,請嘗試將cardNum作爲一個字符串從中提取每個數字並將其解析爲一個int。然後,您可以將它們相乘並將其相加,而無需處理表示巨大的數字。

+0

是的,這是問題所在。謝謝。 – AJPennster

0

cardnum需要是一個字符串,而不是一個數字,你正在循環它期望得到每個數字。 YOur for循環會給你所有從1到信用卡號碼的號碼(長循環)