从String中的char解析int时出错

时间:2017-04-28 10:52:56

标签: java parsing charat

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)

4 个答案:

答案 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));

请注意,如果整数可以为负数,则应取绝对值。