[英]Java NumberFormatException when using Integer.parseInt(String arg)
[英]Java Beginner Having Trouble Using Integer.parseInt for Converting a String into an integer
我正在創建一個批處理程序,它讀取包含的外部輸入文件
信用卡號碼,然后將數字(從右到左)相加,從
最后一位數字並跳過其他所有數字。 我必須將輸入視為字符串而不是
數字。 我的代碼看起來像:
int oddSum = 0, digit = 0;
for(int odd = (cardNumber.length() - 1); odd >= 0; odd = odd - 2)
{
digit = Integer.parseInt(cardNumber);
oddSum += digit;
}
但是String cardNumber是整個String,而我只需要一位數。 說:
cardNumber = "4388576018402626";
我怎么能得到,讓我們說“6”,變成一個整數?
如果您只需要一次處理一個數字,則甚至不需要解析任何內容:
String cardNumber = "4388576018402626";
int d = cardNumber.charAt(0) - '0'; // = 4
但是如果你堅持使用Integer.parseInt()
,請使用String。 substring(begin,end)方法:
int d = Integer.parseInt(cardNumber.substring(0, 1)); // = 4
** 更新 **
或許這是更好的解決方案:
char[] chars = cardNumber.toCharArray();
int oddSum = 0, digit = 0, len = chars.length - 1;
for(int odd = len; odd >= 0; odd -= 2)
{
if (Character.isDigit(chars[odd])) {
digit = Character.getNumericValue(chars[odd]);
oddSum += digit;
} //else {
// do something... throw an exception, whatever here
//}
}
我怎么能得到,讓我們說“6”,變成一個整數?
Integer.parseInt("6");
但是String cardNumber是整個String,而我只需要一位數。
那么就得到一個數字:
String cardNumber = "4388576018402626";
String digit = cardNumber.substring(i, i + 1);
你應該遍歷字符串,好像它是一個單獨的字符數組; 使用cardNumber.toCharArray()
。
int oddSum = 0, digit = 0;
char[] cardNumberDigits = cardNumber.toCharArray();
for(int odd = cardNumberDigits.length - 1; odd >= 0; odd = odd - 2) {
digit = Integer.parseInt(String.valueOf(cardNumberDigits[odd]));
oddSum += digit;
}
charAt()訪問器方法允許您在索引處獲取單個字符。
你需要獲取cardNumber的子字符串
String cardNumber = "4388576018402626";
int start = cardNumber.length()-2;
int end = cardNumber.length()-1;
String subString = cardNumber.substring(start, end);
int numberSix = Integer.parseInt(subString);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.