第13周作业集

题目1:创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。

(1)

 1 package com;
 2 
 3 import java.util.ArrayList;
 4 
 5 public class 交集和并集 {
 6 
 7     public static void main(String[] args) {
 8         ArrayList<String> a1 = new ArrayList<String>();   //ArrayList对象 a1存储第一组字符串
 9         a1.add("chen");
10         a1.add("wang");
11         a1.add("liu");
12         a1.add("zhang");
13         ArrayList<String> a2 = new ArrayList<String>();   //ArrayList对象a2存储第二组字符串
14         a2.add("chen");
15         a2.add("hu");
16         a2.add("zhang");
17         
18         ArrayList <String>a3 = new ArrayList<String>();   //ArrayList对象a3用来对两组字符串进行比较以及存储交集和并集
19         a3.addAll(a1);                                    //a1全部存到a3里
20         for (int i = 0; i < a2.size(); i++) {           //求并集:依次遍历a2中的元素判断
21             if (a3.contains(a2.get(i))) {                //如果a2中的这个元素a3里也有,那么就进行下次循环。
22                 continue;                                //如果a2中的这个元素a3里没有,那么就将这个元素存到a3里,最后得到的a3即为并集
23             } else {
24                 a3.add(a2.get(i));
25             }
26         }
27         System.out.println("两个字符串的并集是"+a3);
28         a3.removeAll(a3);   //将a3中的元素都移除
29         
30         for(int i=0;i<a2.size();i++){                     //求交集:依次遍历a2中的元素
31             if(a1.contains(a2.get(i))){                  //如果a2中的 这个元素a1里也有,就将这个元素存到a3里
32                 a3.add(a2.get(i));                        //如果a2中的这个元素a1里没有,就进行下次循环,最后得到的a3即为交集
33             }
34         }
35         System.out.println("两个字符串的交集是 :"+a3);
36         
37     }
38 
39 }

(2)运行结果:

 题目2:编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。

(1)

 1 package com;
 2 
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Map;
 6 import java.util.Scanner;
 7 import java.util.Set;
 8 
 9 public class zifu {
10 
11     public static void main(String[] args) {
12         String regex="\\w{0,}";                    //正则表达式判断输入是否符合要求
13         System.out.println("请输入一个字符串”:");  
14         Scanner reader=new Scanner(System.in);
15         String str=reader.nextLine();              //str接受输入的字符串
16         
17         if(str.matches(regex)){                       //如果str满足正则表达式的要求
18             int numbercount=0;                       //定义数字计数器,大写字母计数器,小写字母计数器
19             int captialcount=0;
20             int lowercasecount=0;
21             StringBuffer str1=new StringBuffer();  //三个StringBuffer类对象来分别存储数字,大写字母和小写字母
22             StringBuffer str2=new StringBuffer();    //因为要遍历到一个,就随时加到相应的字符串中,所以要用StringBuffer类来创建
23             StringBuffer str3=new StringBuffer();
24             HashMap hm=new HashMap();                //创建HashMap对象
25             for(int i=0;i<str.length();i++){        //for循环遍历输入的字符串,并将其分类,将字符串拆成字符
26                 char c=str.charAt(i);                //将不同的字符存在不同的键值下,
27                 if(c>='0'&&c<='9'){                    //数字字符存在str1里,用键值“数字”标记,数字计数器+1
28                     str1.append(c+"");
29                     hm.put("数字", str1);
30                     numbercount++;
31                 }else if(c>='A'&&c<='Z'){            //大写字母存在str2里,用键值“大写字母”标记,大写字母计数器+1
32                     str2.append(c+"");
33                     hm.put("大写字母", str2);
34                     captialcount++;
35                 }else if(c>='a'&&c<='z'){            //小写字母存在str3里,用键值“小写字母标记”,小写字母计数器+1
36                     str3.append(c+"");
37                     hm.put("小写字母", str3);
38                     lowercasecount++;
39                 }
40             }
41             
42             
43             Set set=hm.entrySet();                       //用set来存储所有HashMap中的项
44             Iterator i=set.iterator();                 //遍历set中的元素即遍历HashMap中的所有元素
45             while(i.hasNext()){                     
46                 Map.Entry me=(Map.Entry)i.next();      //Map.Entry对象存放key和value
47                 
48                 if(me.getKey().equals("数字")){         //如果me的键值与“数字”匹配,那么输出数字计数器的值和me的value值
49                     System.out.print("数字共有"+numbercount+"个,");
50                 }else if(me.getKey().equals("大写字母")){ //如果me的键值与“大写字母”匹配,那么输出大写字母计数器的值和me的value值
51                     System.out.print("大写字母共有"+captialcount+"个,");
52                 }else if(me.getKey().equals("小写字母")){ //如果me的键值与“小写字母”匹配,那么输出小写字母计数器的值和me的value值
53                     System.out.print("小写字母共有"+lowercasecount+"个,");
54                 }
55                 System.out.println("有:"+me.getValue());
56             }
57         }else{
58             System.out.println("输入错误");     //如果输入的字符串与正则表达式格式不符,则输入错误。
59         }
60         
61     }
62 
63 }

(2)运行结果:

输入合法:

 

输入不合法:

 

posted @ 2019-12-01 01:06  丁宝铭  阅读(96)  评论(0编辑  收藏  举报