0
点赞
收藏
分享

微信扫一扫

Java习题练习:兴趣小组

Java旺 2022-03-24 阅读 79

目录

🍋题目描述

为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。

由于工作需要,我们现在想知道:
既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?

请你统计该数字并通过浏览器提交答案。

注意:答案是一个整数,不要提交任何多余的内容。


笨笨有话说:
哇塞!数字好多啊!一眼望过去就能发现相同的,好像没什么指望。
不过,可以排序啊,要是每个文件都是有序的,那就好多了。

歪歪有话说:
排什么序啊,这么几行数字对计算机不是太轻松了吗?
我看着需求怎么和中学学过的集合很像啊…

🍋思路

笨笨,人如其名,它的方法不可取。歪歪的想法可取。
我们把逐行读文件,数字以逗号进行切割,舍去空格,之后存进集合。最后比较集合。
代码呢,没有给出文件路径,因为我们也没有文件嘛。我们懂得思路就行。

🍋源代码

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class Main
{
	public static void main(String[] args){
		int ans=0;
		Set<String> A=new HashSet<String>();
		Set<String> B=new HashSet<String>();
		Set<String> C=new HashSet<String>();
		read(A,"文件路径");//调用函数
		read(B,"同上");
		read(C,"同上");
		for(String a:A) {
			if(B.contains(a)&&!C.contains(a)) {
				ans++;
			}
		}
		System.out.println(ans);
	}
	
	private static void read(Set<String> set,String path) throws IOException {
		BufferedReader reader=new BufferedReader(new FileReader(path));
		String line="";
		while(true) {
			line=reader.readLine();
			if(line==null)break;
			String [] split=line.split(",");//以逗号为分割
			for(String s:split) {
				String trim =s.trim();//去除空格
				if(trim.length()>0) {
					set.add(trim);//加入set
				}
			}
		}
		reader.close();
		
	}
}

🍋其他真题

链接: 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解.
在这里插入图片描述

举报

相关推荐

0 条评论