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)
答案 0 :(得分:4)
您呼叫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)的内容!
答案 1 :(得分:1)
Integer.parseInt(parameter)
期望参数为String。
你可以试试Integer.parseInt(s.charAt(0) + "")
。 +""
是将字符附加到空字符串,从而将字符串转换为String,这正是方法所期望的。
将字符解析为整数的另一种方法(在我看来更好!)是使用Character.getNumericValue(s.charAt(0));
查看此帖子,了解有关converting char to int
的更多详情答案 2 :(得分:0)
需要将 String.valueOf(s.charAt(0))转换为 String.valueOf(s.charAt(0)),即Char to 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)));
}
}
答案 3 :(得分:0)
让我们用这里的东西。
将String中的一位数解析为整数。使用getNumericValue(char)
在您的情况下,将第一个字符放入数字中:
int n = Character.getNumericValue(s.charAt(0));
请注意,如果整数可以为负数,则应取绝对值。