Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中的字符分析int时出错_Java_Parsing_Charat - Fatal编程技术网

Java 从字符串中的字符分析int时出错

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!

我想基于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!
    }
}

您正在调用的
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视为基数。现在清楚了吗?