A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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);
        }

6 个回复

倒序浏览
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),是什么鬼

中间很多东西我理解并不太深,解释不一定对,但是问题有这几个,希望后面的朋友也解释一下,我也重新了解.
回复 使用道具 举报
敢问兄台,你这要删除的是什么东西
回复 使用道具 举报
请问,你是要删除什么?如果是删除集合中的元素,用remove就好了,不用这么麻烦吧
回复 使用道具 举报
        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;
                }
            }
回复 使用道具 举报
多减个1吧
回复 使用道具 举报
zxydeh 中级黑马 2016-3-28 23:25:04
7#
多减一个1是肯定的,话说我不知道楼主想移除什么?所有的数字?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马