簡體   English   中英

Integer.parseInt(string) 有問題

[英]Have an issue with Integer.parseInt(string)

Scanner input = new Scanner (System.in);
        String str = input.nextLine();  // reads x , y
        int x = Integer.parseInt(str.substring(0, str.indexOf(",")));   // this reads the numbers until comma
                                                                                                                                    
        System.out.println(x);
        

當我這樣做時,我沒有收到錯誤

22, 23

但是當我這樣做時

22 ,23

我收到以下錯誤:

Exception in thread "main" java.lang.NumberFormatException: For input string: "22 "
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
    at java.base/java.lang.Integer.parseInt(Integer.java:652)
    at java.base/java.lang.Integer.parseInt(Integer.java:770)
    at scratchFiles.stringArray.main(stringArray.java:9)

使用trim()返回字符串的副本,刪除前導和尾隨空格,以便將其解析為Int

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);
    String str = input.nextLine();  // reads x , y
    int x = Integer.parseInt(str.substring(0, str.indexOf(",")).trim());
    System.out.println(x);
}

問題是當您嘗試獲取從 "22 , 23" 的子字符串返回的字符串的第一個數字是 "22[whitespace]" 時。 使用 Integer.parseInt() 你只能傳遞一個整數字符串作為參數,否則會報錯。

public static void main(String[] args) {
    Scanner input = new Scanner (System.in);
    String str = input.nextLine();  // reads x , y
    // get string till , and remove any trailing whitespaces
    String numString = str.substring(0, str.indexOf(",")).trim();
    int x = Integer.parseInt(numString);
    System.out.println(x);
}

如果字符串是這樣的“22 3, 34”,您應該注意的事情很少,您仍然會遇到異常。 所以要小心先清理你的字符串,然后將它傳遞給 Integer.parseInt()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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