Java 尝试使用split()方法将字符串转换为int时出现NumberFormatException

Java 尝试使用split()方法将字符串转换为int时出现NumberFormatException,java,Java,当我将字符串数组[]声明为普通字符串数组时,但在本例中使用拆分并填充字符串数组时,我可以将字符串数组[]转换为整数 如果你也不明白,我随时准备解释。帮我解决这个问题? 错误是 array[]=("1","2","3","4","5","6"} 我的问题是整数。parseInt(字符串数组由分割方法[count]填充)正在引发异常 此处返回值为字符串“1”,即整数.parseInt(“1”)。。此“1”由split()方法生成 提前谢谢。您正在做一个 Exception in thread "m

当我将字符串数组[]声明为普通字符串数组时,但在本例中使用拆分并填充字符串数组时,我可以将字符串数组[]转换为整数

如果你也不明白,我随时准备解释。帮我解决这个问题? 错误是

array[]=("1","2","3","4","5","6"}
我的问题是整数。parseInt(字符串数组由分割方法[count]填充)正在引发异常

此处返回值为字符串“1”,即整数.parseInt(“1”)。。此“1”由split()方法生成

提前谢谢。

您正在做一个

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
返回的是
无法转换为int。如果要获取第一个字符,需要执行以下操作:

substring(0, 0)
那你为什么要删减一个角色,我不知道

编辑

你的新问题是:

字符串以
#
开头这一事实意味着数组中的第一个值将是
“”
,而这一个值导致了问题。您可以做的是测试字符串长度是否优于0:

substring(0, 1)
或者,您也可以确保开头的字符串不是以
开头,因为您正在执行

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
返回的是
无法转换为int。如果要获取第一个字符,需要执行以下操作:

substring(0, 0)
那你为什么要删减一个角色,我不知道

编辑

你的新问题是:

字符串以
#
开头这一事实意味着数组中的第一个值将是
“”
,而这一个值导致了问题。您可以做的是测试字符串长度是否优于0:

substring(0, 1)

或者,您也可以确保开头的字符串不是以

开头。当split()遇到两个限定符时,它将返回一个空字符串。在1和2之间有一个逗号和一个空格。

当split()遇到两个限定符时,它返回一个空字符串。在1和2之间有一个逗号和一个空格。

我将被包括在非数字上拆分,这样你只得到数字:

for(String current : array){
    if(current.length() > 0) {  
        String temp1 = current.substring(0,1);
        log (Integer.parseInt( temp1));
    }
} 

如果输入以定界符结尾或开头,我也会跳过任何空白的内容。如果输入以定界符结尾或开头,我会在非数字上进行拆分,这样您只会得到数字:

for(String current : array){
    if(current.length() > 0) {  
        String temp1 = current.substring(0,1);
        log (Integer.parseInt( temp1));
    }
} 

如果输入以分隔符结尾或开头,我也会跳过任何空白的内容。首先,您的示例字符串包含“1x”,因此仅使用“#”作为delimeter将得到无法解析为int的“1x”

其次,如果delimeter前面没有任何内容,则split可能会返回空字符串。所以您应该检查空字符串

您的程序应该类似于:

 String array[] = string.split("\\D");
String String=“#1x#2#3#4#5#6#”;
字符串数组[]=String.split(\\D”);
for(int count=0;count
首先,您的示例字符串包含“1x”,因此仅使用“#”作为delimeter将为您提供无法解析为int的“1x”

其次,如果delimeter前面没有任何内容,则split可能会返回空字符串。所以您应该检查空字符串

您的程序应该类似于:

 String array[] = string.split("\\D");
String String=“#1x#2#3#4#5#6#”;
字符串数组[]=String.split(\\D”);
for(int count=0;count
No..substring(start,end)将返回子字符串start(inclusive)哦,真的吗?你测试过吗?…相信我,你肯定需要做
substring(0,1)
才能得到第一个字符。你是对的。我已经编辑了我的帖子。嗯..我想问的不是substring或trim!!我最初提到的是错误的(Integer.parseInt(array[count].substring(0));//正确返回值字符串“1”?尝试此字符串时抛出错误..我前面提到过…为什么我不能转换为int..尝试此操作?我测试过这是我最初的问题,我没有正确解释..你现在能理解吗???@Pradeepraj好的,那么它现在已经修复了吗?不..substring(开始,结束)将返回子字符串开始(包括)哦,真的吗?你测试过吗?…相信我,你肯定需要做
substring(0,1)
来获得第一个字符。你是对的。我已经编辑了我的帖子。嗯。我想问的不是子字符串或修剪!!我最初提到的是错误的!!log(Integer.parseInt(array[count].substring(0));//返回值字符串“1”对??当我尝试这个字符串时,它抛出了错误..我之前提到过…为什么我不能转换为int..尝试这个我测试过的问题这是我最初的问题我没有正确解释..你现在能理解吗?@Pradeepraj好的,那么它现在被修复了吗?之前有一个空格..但那是我的错误..我现在清楚地提出了我的问题r方式..现在之前有一个空格..但那是我的错误..我现在以一种清晰的方式提出了我的问题..现在首先你的示例字符串包含“1x”,所以只使用“#”作为delimeter会给你“1x”,你无法将其解析为int.是的..它会给“1x”,但子字符串(0,1)将单独返回1,对吗?为什么我们不能转换“1”感谢您提供的信息空字符串。我将尝试解决这个问题。正如您所说,我正在为字符串使用连续分隔符。但是本页中给出的示例适用于这种情况。您所说的“空字符串可能通过拆分返回”可能是。您是对的,我将验证并测试此>>它将给出“1x”但子字符串(0,1)将仅返回1对吗?是的,但如果您有2位数字,该怎么办?在这种情况下,使用非数字作为分隔符更为简洁。使用调试器或仅打印出字符串将使您有更好的洞察力。首先,您的示例字符串contai