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~)