黑马程序员技术交流社区
标题:
哪位能帮忙指出问题出在哪里~~
[打印本页]
作者:
zshhappy
时间:
2016-3-28 16:51
标题:
哪位能帮忙指出问题出在哪里~~
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("abc");
list.add("123");
list.add("345");
list.add("def");
System.out.println("删除前的集合中元素为:" + list);
deleteNum(list);
}
public static void deleteNum(ArrayList<String> list) {
for (int j = 0;j < list.size() - 1;j++) {
char[] c = list.get(j).toCharArray();
for(int i = 0;i < c.length - 1;i++){
if(c[i] >= '0' || c[i] <= '9'){
list.remove(j--);
}
}
}
System.out.println("删除后的集合元素为:" + list);
}
作者:
「AτS」
时间:
2016-3-28 20:47
1: for (int j = 0;j < list.size() - 1;j++) ,这个循环不用-1,list.size()是4,但是你是小于它才继续执行,你-1了就少执行一次了;
2: for(int i = 0;i < c.length - 1;i++),这里同理也不用-1
3:list.remove(j--),j一开始的时候值是为0的,你删除0号元素后--,j变成-1,但是里层的for循环并没有结束啊,list.remove(-1),是什么鬼
中间很多东西我理解并不太深,解释不一定对,但是问题有这几个,希望后面的朋友也解释一下,我也重新了解.
作者:
BugBuff
时间:
2016-3-28 22:25
敢问兄台,你这要删除的是什么东西
作者:
卢磊磊
时间:
2016-3-28 22:56
请问,你是要删除什么?如果是删除集合中的元素,用remove就好了,不用这么麻烦吧
作者:
BugBuff
时间:
2016-3-28 23:14
int count = 0;
for (int j = 0;j < list.size();j++) {
char[] c = list.get(j - count).toCharArray();
for(int i = 0;i < c.length;i++){
System.out.print(c[i] + ",");
if(c[i] >= 48 && c[i] <= 57){
list.remove(j - count);
count++;
break;
}
}
作者:
chefei
时间:
2016-3-28 23:15
多减个1吧
作者:
zxydeh
时间:
2016-3-28 23:25
多减一个1是肯定的,话说我不知道楼主想移除什么?所有的数字?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2