Java初学者遇到麻烦使用Integer.parseInt将String转换为整数

时间:2011-03-05 03:33:02

标签: java

我正在创建一个批处理程序,它读取包含

的外部输入文件

信用卡号码,然后从

开始对数字(从右到左)求和

最后一位数字并跳过其他所有数字。我必须将输入视为字符串,而不是

数字。我的代码如下:

          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”,变成一个整数?

5 个答案:

答案 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);