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