Java 从字符串中的字符分析int时出错
我想基于char位置解析输入字符串以获得位置整数 错误消息:Java 从字符串中的字符分析int时出错,java,parsing,charat,Java,Parsing,Charat,我想基于char位置解析输入字符串以获得位置整数 错误消息: 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!
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!
}
}
您正在调用的
parseInt(String,int)
方法需要一个基数;表示你想使用的“数字系统”的东西,比如
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)
(十进制为10)!相反,使用
parseInt("10", 10)
或
假设你想在十进制中工作。为了解释您的错误消息,让我们看看您的代码实际上在做什么。本质上,它要求:
Integer.parseInt(i, 10)
这可以归结为一个电话
Integer.parseInt("123", '1')
我们就这样做了——因为它与您的错误消息很好地吻合;as 49不是解析数字的有效基数
但真正的答案是:不要盲目地使用一些库方法。研究它的文档,这样你就能理解它在做什么;以及您传递给它的参数的实际含义
因此,请转到这里并阅读相关内容 您正在调用的方法
parseInt(String,int)
需要一个基数;表示你想使用的“数字系统”的东西,比如
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)
(十进制为10)!相反,使用
parseInt("10", 10)
或
假设你想在十进制中工作。为了解释您的错误消息,让我们看看您的代码实际上在做什么。本质上,它要求:
Integer.parseInt(i, 10)
这可以归结为一个电话
Integer.parseInt("123", '1')
我们就这样做了——因为它与您的错误消息很好地吻合;as 49不是解析数字的有效基数
但真正的答案是:不要盲目地使用一些库方法。研究它的文档,这样你就能理解它在做什么;以及您传递给它的参数的实际含义
因此,请转到这里并阅读相关内容 需要将String.valueOf(s.charAt(0))转换为String.valueOf(s.charAt(0))即Char转换为String
Integer.parseInt("123", 49) // '1' --> int --> 49!
需要将String.valueOf(s.charAt(0))转换为String.valueOf(s.charAt(0))即字符转换为字符串
Integer.parseInt("123", 49) // '1' --> int --> 49!
让我们利用这里的资源 将字符串中的一个数字解析为整数。使用 在您的情况下,要将第一个字符转换为数字,请执行以下操作:
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)));
}
}
请注意,如果整数可以为负数,则应取绝对值。使用此处的值 将字符串中的一个数字解析为整数。使用 在您的情况下,要将第一个字符转换为数字,请执行以下操作:
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)));
}
}
请注意,如果整数可以为负数,则应取绝对值。整数。parseInt(参数)
要求参数为字符串。
您可以尝试Integer.parseInt(s.charAt(0)+>)
。+”
是将字符附加到空字符串,从而将字符转换为字符串,这正是该方法所期望的
另一种将字符解析为整数的方法(我认为更好!)是使用Character.getNumericValue(s.charAt(0))代码>
查看此帖子以了解有关整数的更多详细信息。parseInt(参数)
要求参数为字符串。
您可以尝试Integer.parseInt(s.charAt(0)+>)
。+”
是将字符附加到空字符串,从而将字符转换为字符串,这正是该方法所期望的
另一种将字符解析为整数的方法(我认为更好!)是使用Character.getNumericValue(s.charAt(0))代码>
查看这篇文章,了解有关“我想从字符位置0的字符串中提取int,但失败了!”您知道parseInt(string,int)
的第二个参数是基数,即数字的基数吗?以1为基数的数字是多少?我假设您得到的“error”有一条消息,比如radix 1小于Character。minu radix
(MIN radix为2),不是吗?“我想从char位置0的字符串中提取int,但失败了!”您意识到parseInt(string,int)
的第二个参数是基数,即数字的基数?以1为基数的数字是多少?我假设您得到的“error”有一个类似于radix 1小于Character.MIN_radix
(最小基数为2)的消息,不是吗?'1'=>49这意味着它在基数参数中转换为char('1')到decimal(49)。为什么?为什么要转换为十进制?传递值“1”。但是转换该字符会导致int值为49。只需搜索ASCII表,并查找“1”的数值。取“123”中的第一个字符,并将其用作方法调用的第二个参数。因此,您的代码将49视为基数。现在清除?'1'=>49,这意味着它在基数参数中将字符('1')转换为十进制(49)。为什么?为什么要转换为十进制?传递值“1”。但是转换该字符会导致int值为49。只需搜索ASCII表,并查找“1”的数值。取“123”中的第一个字符,并将其用作方法调用的第二个参数。因此,您的代码将49视为基数。现在清楚了吗?