题目一:
创建两个线性表,分别存储{“chen”,“wang”,“liu”,“zhang”}和{“chen”,“hu”,“zhang”},求这两个线性表的交集和并集。
代码:
import java.util.*; public class test1 { public static void main(String[] args) { 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> u=new ArrayList<String> ();//并集,∪ ArrayList<String> n=new ArrayList<String> ();//交集,∩ /*下程序段求交集:对长度大的列表a1遍历,每次遍历时,与a2中的元素作比较, 如果a2中存在a1的元素,将这个元素存到n中*/ for(int i=0;i<a1.size();i++){ if(a2.contains(a1.get(i))){ n.add(a1.get(i)); } } System.out.println("交集为"+n.subList(0, n.size())); /*下程序段求并集:先将a1的元素添加到u中,对a2遍历,如果u中存在a2中的元素,进行下一次循环, 如果u中没有a2中的元素,将此元素存入u中*/ u.addAll(a1); for(int i=0;i<a2.size();i++){ if(u.contains(a2.get(i))) continue; else u.add(a2.get(i)); } System.out.println("并集为"+u.subList(0, u.size())); } }
运行结果:
题目二:
编写一个应用程序,输入一个字符串,该串至少由数字、大写字母和小写字母三种字符中的一种构成,如“123”、“a23”、“56aD”、“DLd”、“wq”、“SSS”、“4NA20”,对输入内容进行分析,统计每一种字符的个数,并将该个数和每种字符分别输出显示。如:输入内容为“34Ah5yWj”,则输出结果为:数字——共3个,分别为3,4,5;小写字母——共3个,分别为h,y,j;大写字母——共2个,分别为A,W。
代码:
import java.util.*; public class test2 { public static void main(String[] args) { //定义String类型的字符串,并赋值 System.out.println("请输入需要判断的 字符串:"); Scanner r=new Scanner(System.in); String s=new String(); s=r.nextLine(); //new三个字符列表,分别存储大写字母、小写字母、数字字符 ArrayList<Character> number=new ArrayList<Character>(); ArrayList<Character> upper=new ArrayList<Character>(); ArrayList<Character> lower=new ArrayList<Character>(); //对字符串遍历,将单个字符存储到对应的字符列表中 for(int i=0;i<s.length();i++){ if(s.charAt(i)>='a'&&s.charAt(i)<='z'){ lower.add(s.charAt(i)); continue; } if(s.charAt(i)>='A'&&s.charAt(i)<='Z'){ upper.add(s.charAt(i)); continue; } if(s.charAt(i)>='0'&&s.charAt(i)<='9'){ number.add(s.charAt(i)); continue; } } //输出结果 System.out.println("大写字母有"+upper.size()+"个,分别是"+upper); System.out.println("小写字母有"+lower.size()+"个,分别是"+lower); System.out.println("数字字符有"+number.size()+"个,分别是"+number); } }
运行结果: