从 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!
}
}
我想根据字符位置解析输入字符串以获得位置整数。
错误信息:
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)
需要一个 radix;表示您想要工作的"number system"的东西,例如
parseInt("10", 10)
(十进制为 10)!相反,使用
Integer.parseInt(i)
或
Integer.parseInt(i, 10)
假设你想在十进制系统中工作。并解释您的错误消息 - 让我们看看您的代码实际在做什么。本质上,它调用:
Integer.parseInt("123", '1')
这归结为一个电话
Integer.parseInt("123", 49) // '1' --> int --> 49!
我们开始了 - 因为它与您的错误消息很好地对齐;因为 49 不是解析数字的有效 radix。
但是真正的回答在这里:不要盲目地使用一些库方法。研究它的文档,以便您 了解 它在做什么;以及你传递给它的参数实际上是什么 mean。
因此,翻到这里阅读 parseInt(String, int) 的内容!
需要将 String.valueOf(s.charAt(0)) 转换为 String.valueOf(s.charAt (0)) 即字符到字符串。
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));
请注意,如果整数可以为负数,则应取绝对值。
Integer.parseInt(parameter)
期望参数是一个字符串。
你可以试试Integer.parseInt(s.charAt(0) + "")
。 +""
是将字符附加到一个空字符串,从而 将字符 转换为字符串,这正是该方法所期望的。
另一种将字符解析为整数的方法(在我看来更好!)是使用 Character.getNumericValue(s.charAt(0));
检查此 post 以获取有关 converting char to int
的更多详细信息
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!
}
}
我想根据字符位置解析输入字符串以获得位置整数。
错误信息:
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)
需要一个 radix;表示您想要工作的"number system"的东西,例如
parseInt("10", 10)
(十进制为 10)!相反,使用
Integer.parseInt(i)
或
Integer.parseInt(i, 10)
假设你想在十进制系统中工作。并解释您的错误消息 - 让我们看看您的代码实际在做什么。本质上,它调用:
Integer.parseInt("123", '1')
这归结为一个电话
Integer.parseInt("123", 49) // '1' --> int --> 49!
我们开始了 - 因为它与您的错误消息很好地对齐;因为 49 不是解析数字的有效 radix。
但是真正的回答在这里:不要盲目地使用一些库方法。研究它的文档,以便您 了解 它在做什么;以及你传递给它的参数实际上是什么 mean。
因此,翻到这里阅读 parseInt(String, int) 的内容!
需要将 String.valueOf(s.charAt(0)) 转换为 String.valueOf(s.charAt (0)) 即字符到字符串。
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));
请注意,如果整数可以为负数,则应取绝对值。
Integer.parseInt(parameter)
期望参数是一个字符串。
你可以试试Integer.parseInt(s.charAt(0) + "")
。 +""
是将字符附加到一个空字符串,从而 将字符 转换为字符串,这正是该方法所期望的。
另一种将字符解析为整数的方法(在我看来更好!)是使用 Character.getNumericValue(s.charAt(0));
检查此 post 以获取有关 converting char to int
的更多详细信息