第13周作业集

题目1:

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

源程序:ArrayListDott.java

/*判断交集用了双重for循环,一旦两个串有相等的就输出
 * 判断并集利用HashSet类的唯一性去重,分别把两个表的内容添加到一个由HashSet类创建的对象中
 *HashSet类存储时会自动去重,这样就达到了求并集的目的
 * */
package edu.ccut.fanxing;
import java.util.*;
public class ArrayListDott {
    public static void main(String[] args) {
        ArrayList<String> ary1 = new ArrayList<String>();
        ArrayList<String> ary2 = new ArrayList<String>();
        ary1.add("chen");
        ary1.add("wang");
        ary1.add("liu");
        ary1.add("zhang");
        ary2.add("chen");
        ary2.add("hu");
        ary2.add("zhang");
        int i,j;
        System.out.print("交集是:");
        for(i=0;i<ary1.size();i++) {//双重for循环判断交集
            for(j=0;j<ary2.size();j++) {
                if(ary1.get(i)==ary2.get(j))//判断对应位置内容是否相等
                    System.out.print(ary1.get(i)+" ");//一旦相等就输出表1对应位置的内容
            }
        }
        System.out.println();
        HashSet<String> hs = new HashSet<String>();//利用哈希Set类的唯一性判断并集
        hs.addAll(ary1);//将ary1全部添加到hs中
        hs.addAll(ary2);//将ary2全部添加到hs中
        System.out.print("并集是:"+hs);//hs会自动去除两个表中重复的内容
    }
}

 

运行结果:

题目2:

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

 

源程序:Test.java

/* 接收用户输入的字符串
 * 创建HashMap01类对象,调用hm.HashMap01()方法传递参数s1;
 * 输出相应类型的字符个数和内容
 * */
package edu.ccut.mapl;
import java.util.*;
public class Test {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s1 = in.nextLine();//接收用户输入的字符
        System.out.println("用户输入的字符串是: "+s1);
        HashMap01 hm = new HashMap01();//创建对象
        hm.HashMap01(s1);//调用方法并传参
        System.out.print("数字——共有: "+hm.n1+"个, 分别是: ");
        System.out.println(hm.t1);
        System.out.print("小写字母——共有: "+hm.n2+"个, 分别是: ");
        System.out.println(hm.t2);
        System.out.print("大写字母——共有: "+hm.n3+"个, 分别是: ");
        System.out.println(hm.t3);
    }
}

 

源程序:HashMap01.java

/* 分别定三个下标标记n1,n2,n3(也代表每个类型有几个),用来对应创建的ArrayList表t1,t2,t3(用来存入各类型的值)
 * 创建HashMap对象ha1,创建一个字符数组k,用来存储用户输入的字符串,把字符串转化为字符数组
 * 然后通过字符数组K存到HashMap的对象ha1中
 * while循环对象ha1的内容,判断相应位置上的内容是数字,小写字母,还是大写字母
 * 判断后把对应类型的内容存入到相应的ArrayList表t1,t2,t3中,然后再把相应的标记n1,n2,n3自身+1
 * */
package edu.ccut.mapl;
import java.util.*;

public class HashMap01 {
    int n1 = 0,n2 = 0,n3 = 0;//三个下标标记
    ArrayList<Character> t1 = new ArrayList<Character>();//存数字
    ArrayList<Character> t2 = new ArrayList<Character>();//存小写字母
    ArrayList<Character> t3 = new ArrayList<Character>();//存大写字母
    
    public void HashMap01(String s) {
        HashMap<Integer,Character> ha1 = new HashMap<Integer,Character>();
        char k[];//创建一个字符数组
        k = s.toCharArray();//把字符串转化为字符数组
        int i;
        for(i=0;i<s.length();i++) {//把用户输入的字符通过字符数组K存到HashMap的对象ha1中
            ha1.put(i,k[i]);
        }
        Set set = ha1.entrySet();
        Iterator io = set.iterator();
        while(io.hasNext()) {//while循环这个HashMap创建的ha1对象散列表
            Map.Entry ie = (Map.Entry)io.next();
            if((char)ie.getValue()>='0' && (char)ie.getValue()<='9') {//判断是不是数字
                char p1 = (char) ie.getValue();//把数字存入p1中
                t1.add(n1,p1);//在t1表中的n1位置上存入p1
                n1++;//位置加1
            }
            else if((char)ie.getValue()>='a' && (char)ie.getValue()<='z') {//判断是不是小写字母
                char p2 = (char) ie.getValue();//把值存入p2中
                t2.add(n2,p2);//在t2表中的n2位置上存入p2
                n2++;
            }
            else if((char)ie.getValue()>='A' && (char)ie.getValue()<='Z') {//判断是不是大写字母
                char p3 = (char) ie.getValue();//把值存入p3中
                t3.add(n3,p3);//在t3表中的n3位置上存入p3
                n3++;
            }
       }
    }
}

运行结果:

 

posted @ 2019-11-29 18:11  赵迎港20194660  阅读(139)  评论(0编辑  收藏  举报