黑马程序员技术交流社区

标题: 哪位能帮忙指出问题出在哪里~~ [打印本页]

作者: 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