永发信息网

java把字符串数组转换为整形数组老是出现格式错误,帮忙找找原因

答案:3  悬赏:20  手机版
解决时间 2021-02-02 04:51
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)
最佳答案



你用空格切字符串的话,可能会切出空串 "" ,
如果你把空串转成数字的话,就会报异常。
-----------------
帮你改短点:
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
全部回答
你a[j]取得值不正确。取得a[j]="";时就报错了
字符串是一个比较特殊的对象。 字符串之所以特殊,是因为java会在内容中为string类型的对像开辟一个空间,我们叫他串池! 字符串对象的创建之后会被放入到串池中。 串池有一个特点,就是对于相同对象,池中只存储一份。 那么串池把神马样的string看做是相同的string呢。请看: string a="abc";和string b="abc" 对于这样的类型的声明方式(不是new出来的)串池把他们看做一个对象,所以池中只存储一分,只是有a 和b 两个引用罢了! 对于string只要用new关键字new出来的string,都是单独的一个对象。 而“==”号,他是用来比较对象的内存地址,所以只要用==号来比较string,只要不是自己比自己,那肯定是false。 而string中的equls方法已经做了处理,他是比较内容,所以要比较string的内容的时候而不是地址的时候,那就用它吧!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
顺手牵羊的近义词和反义词是什么豆豆
写出二十的不同的乘法分配律的分数算式
2月2日是世界湿地日。我国目前有22个国家级湿
晓奏的意思是什么啊?知道的请说下!
女孩子的网名
肿字的反义词近义词造句怎么写
辐分的意思是什么啊?知道的请说下!
【最全面的考虑】在括号内填成语:最渊博的知
Please take these t______ to your aunt.
白水寨英文怎么说
安装门窗需要专门的安装资质吗
清涧公安局对垫付宝诈骗案应重新审理,受害人
料浆泡的意思是什么啊?知道的请说下!
一氧化氮是酸性氧化物
一个无盖鱼缸里面有块高为21cm,体积为4200cm
推荐资讯
建行博爱mastercard信用卡,博爱红卡终身免年
一道减法算式,被减数是40,减数是差的2/3,则减
华佗治病   有一郡守病,佗以为其人盛
赞不絶口的意思是什么啊?知道的请说下!
保护接地中,三相五线制是指()。A.TN-CB.TN-S
明明和军军共有水彩笔56只已知敏敏水彩笔数量
请问去过巴厘岛的朋友解答,他们的民族服饰名
有没典当手机的地方
下图是某家族一种遗传病的系谱图,下列分析正
acer笔记本电脑怎么设置密码
虢镇蒙娜丽莎婚纱摄影地址在什么地方,想过去
奶妈绝望之塔99怎么过
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?