簡體   English   中英

Java初學者遇到麻煩使用Integer.parseInt將String轉換為整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM