2017蓝桥杯JAVA题目——“兴趣小组”

2017蓝桥杯JAVA题目——“兴趣小组”

一、知识点:1、set去重 2、读文件
二、工具:Eclipse
三、题目:

/*
为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组
(以下称A组,B组,C组)。
每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。
每个文件中存储的是学生的学号。
由于工作需要,我们现在想知道:
既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?
请你统计该数字并通过浏览器提交答案。
注意:答案是一个整数,不要提交任何多余的内容。


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

歪歪有话说:
排什么序啊,这么几行数字对计算机不是太轻松了吗?
我看着需求怎么和中学学过的集合很像啊…
*/
四、学生名单都是这样的:
在这里插入图片描述

五、JAVA代码

package practice_1;

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

/*
标题:兴趣小组

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

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

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

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

--------------------

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

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

*/
public class Main {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		int ans = 0;
		//读A,B,C三个文件
		Set<String> A = new HashSet<String>();
		Set<String> B = new HashSet<String>();
		Set<String> C = new HashSet<String>();
		read(A,"D:\\比赛\\蓝桥杯\\workspace\\java-c-source-code\\2017JavaC\\2017_Java_C\\A.txt");
		read(B,"D:\\比赛\\蓝桥杯\\workspace\\java-c-source-code\\2017JavaC\\2017_Java_C\\B.txt");
		read(C,"D:\\比赛\\蓝桥杯\\workspace\\java-c-source-code\\2017JavaC\\2017_Java_C\\C.txt");
		for(String b:A) {
			if(B.contains(b) && !C.contains(b)) {
				ans++;
			}
		}
		System.out.print(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;//如果这行啥数据都没有,就break
			String[] split = line.split(",");//将学号拆成一个个的数据
			//将学号依次放入set中
			for(String a:split) {
				String trim = a.trim();//去除学号头尾空白
				if(trim.length()>0) {
					set.add(trim);
				}
			}
		}
		reader.close();
	}
}

六、答案(20)
在这里插入图片描述
七、结语:
结束啦,一步一步来,要不骄不躁,抬头微笑喔(wink~)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值