public static void main(String[] args){
String[] str={" com"," abc(122...567,789...1230)"," ajik"};
for(int i=0;i String s="";//从字符串数组中取出一个字符串进行处理
s=str[i];
String pat1="[a-zA-Z]";//去掉字符串中的英文字母,替换为空格
Pattern p1=Pattern.compile(pat1);
Matcher m1=p1.matcher(s);
s=m1.replaceAll(" ");
String pat2="\\W+"; //去掉字符串中的非字母、数字、下划线(即、(等),替换为空格
Pattern p2=Pattern.compile(pat2);
Matcher m2=p2.matcher(s);
s=m2.replaceAll(" ");
s.trim();//去掉收尾空格
String pat3="\\s+"; //将中间的空格拆分,得到连在一起的数字
Pattern p3=Pattern.compile(pat3);
String[] a=p3.split(s);
ArrayList list = new ArrayList();
for(int j=0;j list.add(Integer.parseInt(a[j]));//字符串数组转换到整形集合中去,就是这一句老是出错
//System.out.println(a[j]);
}
}
}
最后的结果是把字符串中的数字提取出来,但是写了好几种算法实现这个功能,每次到了Integer.parseInt的时候就会出错:
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)
at genePre.Test.main(Test.java:32)
java把字符串数组转换为整形数组老是出现格式错误,帮忙找找原因
答案:3 悬赏:20 手机版
解决时间 2021-02-02 04:51
- 提问者网友:趣果有间
- 2021-02-01 03:51
最佳答案
- 五星知识达人网友:迷人又混蛋
- 2021-02-01 04:57
你用空格切字符串的话,可能会切出空串 "" ,
如果你把空串转成数字的话,就会报异常。
-----------------
帮你改短点:
public static void main(String[] args) {
String[] str = { " com"," ajik" };
for (int i = 0; i < str.length; i++) {
String regex = "\\d+";
Pattern p2 = Pattern.compile(regex);
Matcher m2 = p2.matcher(str[i]);
ArrayList list = new ArrayList();
while (m2.find()) {
int num = Integer.parseInt(m2.group());
list.add(num);
System.out.println(num);
} //end while
} //end for
} //end main
全部回答
- 1楼网友:等灯
- 2021-02-01 06:04
你a[j]取得值不正确。取得a[j]="";时就报错了
- 2楼网友:孤独入客枕
- 2021-02-01 05:25
字符串是一个比较特殊的对象。
字符串之所以特殊,是因为java会在内容中为string类型的对像开辟一个空间,我们叫他串池!
字符串对象的创建之后会被放入到串池中。
串池有一个特点,就是对于相同对象,池中只存储一份。
那么串池把神马样的string看做是相同的string呢。请看:
string a="abc";和string b="abc" 对于这样的类型的声明方式(不是new出来的)串池把他们看做一个对象,所以池中只存储一分,只是有a 和b 两个引用罢了!
对于string只要用new关键字new出来的string,都是单独的一个对象。
而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。
而string中的equls方法已经做了处理,他是比较内容,所以要比较string的内容的时候而不是地址的时候,那就用它吧!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯