簡體   English   中英

從String中的char解析int時出錯

[英]error while parsing an int from a char in String

import java.util.*;

public class test 
{
    public static void main(String[] args)
    {
        int i = 123;

        String s = Integer.toString(i);

        int Test = Integer.parseInt(s, s.charAt(0));    // ERROR!
    }
}

我想基於char位置解析輸入字符串以獲取位置整數。

錯誤信息:

Exception in thread "main" java.lang.NumberFormatException: radix 49 greater than Character.MAX_RADIX
    at java.lang.Integer.parseInt(Unknown Source)
    at test.main(test.java:11)

您正在調用parseInt(String, int)需要一個基數 表示您要使用的“數字系統”的內容,例如

parseInt("10", 10) 

(十進制為10)! 相反,使用

Integer.parseInt(i)

要么

Integer.parseInt(i, 10)

假設您想在十進制系統中工作。 並解釋您的錯誤消息-讓我們看看您的代碼實際在做什么。 本質上,它調用:

Integer.parseInt("123", '1') 

歸結為一個電話

Integer.parseInt("123", 49) // '1' --> int --> 49! 

然后我們去了-它很好地與您的錯誤消息對齊; 因為49不是解析數字的有效基數

但是真正的答案是:不要盲目使用某種庫方法。 研究其文檔,以便您了解它在做什么; 以及您傳遞給它的參數的實際含義

因此,轉到這里,閱讀parseInt(String,int)的內容!

Integer.parseInt(parameter)期望參數為字符串。 您可以嘗試Integer.parseInt(s.charAt(0) + "") +""將字符附加到空字符串,從而將char 強制轉換為String,這正是該方法所期望的。

將Characters解析為Integer的另一種方法(我認為更好!)是使用Character.getNumericValue(s.charAt(0));

檢查此帖子以獲取有關將char轉換為int的更多詳細信息

需要將String.valueOf(s.charAt(0))轉換為String.valueOf(s.charAt(0))即將 Char轉換為String。

import java.util.*;

    public class test 
    {
        public static void main(String[] args)
        {
            int i = 123;

            String s = Integer.toString(i);
            int Test = Integer.parseInt(String.valueOf(s.charAt(0)));   
        }
    }

讓我們使用這里的東西。

將字符串中的一位解析為整數。 使用getNumericValue(char)在您的情況下,將第一個字符轉換為數字:

int n = Character.getNumericValue(s.charAt(0));

請注意,如果整數可以為負,則應采用絕對值。

暫無
暫無

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

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