题目1:创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。
题目2:编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。
/*创建2个ArrayList对象分别存入字符串,a3,a4两个ArrayList对象用于备份,使用retainAll方法删除a1中除了包含在a2中的元素之外的全部元素,此为交集。将a3中与a4相同的元素删除,再将a4的元素加入到a3,此为并集*/ package My; import java.util.ArrayList; public class Test11_26 { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<String> a1 = new ArrayList<String>(); a1.add("chen"); a1.add("wang"); a1.add("liu"); a1.add("zhang"); ArrayList<String> a2 = new ArrayList<String>(); a2.add("chen"); a2.add("hu"); a2.add("zhang"); ArrayList<String> a3 = new ArrayList<String>(a1); ArrayList<String> a4 = new ArrayList<String>(a2); a1.retainAll(a2); System.out.println("交集为:"+a1); a3.removeAll(a4); a3.addAll(a4); System.out.println("并集为:"+a3); } }
/*创建一个字符串对象,将字符串转为数组存在b1中,3个计数器变量记录字符个数,创建3个ArrayList对象分别存储不同的字符, for循环遍历数组,使用Character中的方法分别判断数字字符、小写字母字符、大写字母字符*/ package My; import java.util.*; public class Test11_26_2 { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入一个字符串"); Scanner reader = new Scanner(System.in); String a1 = new String(reader.next()); char b1[] = a1.toCharArray(); System.out.println("输入内容为"+a1); int digit = 0; int lower = 0; int upper = 0; ArrayList s1 = new ArrayList(); ArrayList s2 = new ArrayList(); ArrayList s3 = new ArrayList(); for(int i=0;i<b1.length;i++) { if(Character.isDigit(b1[i])) { //判断是否是数字字符 digit++; s1.add(b1[i]); }else if(Character.isLowerCase(b1[i])) { //判读是否是小写字母 lower++; s2.add(b1[i]); }else if(Character.isUpperCase(b1[i])) { //判断是否是大写字母 upper++; s3.add(b1[i]); } } System.out.println("包含数字:"+digit+"个,分别为:"+s1); System.out.println("包含小写字母:"+lower+"个,分别为:"+s2); System.out.println("包含大写字母:"+upper+"个,分别为:"+s3); } }