我正在创建一个批处理程序,它读取包含
的外部输入文件信用卡号码,然后从
开始对数字(从右到左)求和最后一位数字并跳过其他所有数字。我必须将输入视为字符串,而不是
数字。我的代码如下:
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”,变成一个整数?
答案 0 :(得分:3)
如果您只需要一次处理一个数字,则甚至不需要解析任何内容:
String cardNumber = "4388576018402626";
int d = cardNumber.charAt(0) - '0'; // = 4
但如果您坚持使用Integer.parseInt()
,请使用字符串。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
//}
}
答案 1 :(得分:2)
我怎么能得到,让我们说“6”,变成一个整数?
Integer.parseInt("6");
但是String cardNumber是整个String,而我只需要一位数。
那么只需要一个数字:
String cardNumber = "4388576018402626";
String digit = cardNumber.substring(i, i + 1);
答案 2 :(得分: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;
}
答案 3 :(得分:0)
charAt()访问器方法允许您在索引处获取单个字符。
答案 4 :(得分:0)
您需要获取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);