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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

上干货,~
这是一道今天的 课后作业,我写了好长时间,然后怎么都不会 用  迭代 去 满足题目的要求, 现在上原题~:
分析以下需求,并用代码实现:
        (1)定义List集合,存入多个字符串
        (2)删除集合中包含0-9数字的字符串(只要字符串中包含0-9中的任意一个数字就需要删除此整个字符串)
        (3)然后利用迭代器遍历集合元素并输出

代码:
-----------------------------------------------------------------------------------------------------------------
package Demo;


        import java.util.ArrayList;
        import java.util.List;
        import java.util.ListIterator;
import java.util.Scanner;

        public class crazy {
                public static void main(String[] args) {
                        List list = new ArrayList();
                        String str = "(.)*([0-9])+(.)*";
                       
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入字符串,当输入\"quit\"时,结束:");
                        while(true){
                                String ss = sc.nextLine();
                                if (ss.equals("quit")) {
                                        break;
                                }
                                list.add(ss);
                        }
                        System.out.println(list);
                        List list2 = new ArrayList();
                        for (int i = 0; i <list.size(); i++) {
                                if(((String)list.get(i)).matches(str)) {
                                        list2.add(list.get(i));
                                }
                                }
                        System.out.println(list2);
                       
                        list.removeAll(list2);
                        System.out.println(list);
                        ListIterator lit = list.listIterator();               
                }
}


----------------------------------------------------------------------------------------------------

总结下:  
我大概的思路是这个样子的~
1,先创建一个 集合,用来存储由键盘录入的数据,(是所有的数据.)  list
2使用键盘录入,创建Scanner对象,然后通过 循环来添加进入集合~
3,写出正则, 使用 String 中的  matchers 方法,
4,再次创建一个 集合,这个对象用来存储需要删除的. list2
5,通过 list 中的   get()   size() 方法,进行for循环判断  其中元素是否满足 正则要求
6,将上面 满足正则要求的数据存入 list2中,
7,使用   list.removeAll(list);
8输出list,得到答案.


-----------------------------------------------------------------------------------------
但是感觉没有用到今天的 内容知识 啊,
考虑过使用 迭代的方式来做, 但是不知道怎么 去调用matchers 这个方法,
然后不知道怎么写中间的 数值.
有知道的,请不要吝惜你们的   脑细胞,
互相讨论,我看看别人的思路....

5 个回复

倒序浏览
字符串名.matchers(正则表达式)
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
正则表达式,数字  "[\\d]"或者[0-9],不是数字就  "[\\d]"或者[^0-9]
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
啊,不是数字是D,打错了
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
这个题用for循环嵌套很简单,外层循环遍历集合每个字符串元素,然后将每个元素转成字符数组,内层遍历字符,满足条件就删,别忘了索引要减减。
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
list.hasnext遍历集合,list.next获取每个元素如果0-9移除,然后输出
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马