string = "#1x#2#3#4#5#6#";
String array[] = string.split("#");
for(int count=0;count<=6;count++){
// String temp = array[count];
String temp1 = array[count].substring(0,1).trim();//here temp1="1"
// String temp1 = "1"; //this is possible
log (Integer.parseInt( temp1));// i cant convert the array which is populated by split("delimiter") why ??
}
这是数组:
array[]=("1","2","3","4","5","6"}
当我将此声明为普通的String数组时,我可以将String数组[]转换为整数,但是当我在此示例中使用split并填充String数组时。
我准备解释你是否也无法理解。帮我解决这个问题? 错误是
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)
我的问题是Integer.parseInt(string_array_populated_by_split_method [count])抛出异常
这里的返回值是一个字符串“1”,即Integer.parseInt(“1”)..这个“1”是由split()方法生成的
先谢谢。
答案 0 :(得分:2)
你正在做一个
substring(0, 0)
返回""
,""
无法转换为int。如果你想获得第一个角色,你需要这样做:
substring(0, 1)
那你为什么要修剪一个角色,我不知道...
修改强>
你的新问题是:
您的String以#
开头这一事实意味着数组中的第一个值将是""
,而这个值会导致问题。您可以做的是测试String长度优于0:
for(String current : array){
if(current.length() > 0) {
String temp1 = current.substring(0,1);
log (Integer.parseInt( temp1));
}
}
或者您也可以确保开头的字符串不是以#
开头。
答案 1 :(得分:1)
我将包括拆分非数字,这样只获取数字:
String array[] = string.split("\\D");
我还会跳过任何空白的内容,如果您的输入结束或以分隔符开头,则会从分割中获取。
答案 2 :(得分:1)
首先你的示例字符串包含“1x”,所以只使用“#”作为分隔符会给你“1x”,你无法解析为int。
如果在分隔符前面没有任何内容,则可以通过拆分返回空字符串。所以你应该检查空字符串。
你的程序应该是这样的:
String string = "#1x#2#3#4#5#6#";
String array[] = string.split("\\D");
for (int count = 0; count < array.length; count++) {
if (!array[count].isEmpty()) {
System.out.println(Integer.parseInt(array[count]));
}
答案 3 :(得分:0)
当split()遇到两个连续的分隔符时,它返回一个空字符串。在1到2之间,你有一个逗号和一个空格。