IO流加集合加强练习题附答案.docx
《IO流加集合加强练习题附答案.docx》由会员分享,可在线阅读,更多相关《IO流加集合加强练习题附答案.docx(22页珍藏版)》请在冰点文库上搜索。
![IO流加集合加强练习题附答案.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/832f8166-b96e-4192-88f9-9108559c5c03/832f8166-b96e-4192-88f9-9108559c5c031.gif)
IO流加集合加强练习题附答案
休息日补充加强练习题:
题目一:
将两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”},把这两个集合去除重复项合并成一个,实现需求
importjava.util.ArrayList;
/*题目一:
将两个集合{“a”,“b”,“c”,“d”,“e”}和{“d”,“e”,“f”,“g”,“h”},
把这两个集合去除重复项合并成一个,实现需求*/
publicclassDemo10{
publicstaticvoidmain(String[]args){
ArrayListlist1=newArrayList();
list1.add("a");
list1.add("b");
list1.add("c");
list1.add("d");
list1.add("e");
ArrayListlist2=newArrayList();
list2.add("d");
list2.add("e");
list2.add("f");
list2.add("g");
list2.add("h");
myAdd(list1,list2);
}
privatestaticvoidmyAdd(ArrayListlist1,ArrayListlist2){
for(Stringstring:
list2){
if(!
list1.contains(string)){
list1.add(string);
}
}
System.out.println(list1);
}
}
题目二:
已知文件a.txt文件中的内容为“AAbcdea22dferwplkCC321ou1”,请编写程序读取该文件内容,要求去掉重复字母(区分大小写字母)并按照自然排序顺序后输出到b.txt文件中。
即b.txt文件内容应为"abc......123..."这样的顺序输出
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.TreeSet;
publicclassDemo11{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderfr=newBufferedReader(newFileReader(
"C:
\\Users\\xiawei\\Desktop\\a.txt"));
BufferedWriterbw=newBufferedWriter(newFileWriter(
"C:
\\Users\\xiawei\\Desktop\\b.txt"));
Stringline=null;
while((line=fr.readLine())!
=null){
line=sort(line);
bw.write(line);
}
bw.close();
fr.close();
}
privatestaticStringsort(Stringline){
TreeSetset=newTreeSet();
StringBuildersb=newStringBuilder();
char[]ch=line.toCharArray();
for(charc:
ch){
set.add(c);
}
for(Charactercharacter:
set){
sb.append(character);
}
returnsb.toString();
}
}
题目三:
把指定目录下(包含子目录)的所有图片,复制到另一个指定目录下
importjava.io.BufferedInputStream;
importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
//题目三:
把指定目录下(包含子目录)的所有图片,复制到另一个指定目录下
publicclassDemo4{
staticStringregex=".+\\.([j][p][g]|[p][n][g]|[g][i][f])";
publicstaticvoidmain(String[]args)throwsIOException{
Filefile=newFile("E:
\\图片");
copyPhoto(file);
System.out.println("传输完成!
");
}
privatestaticvoidcopyPhoto(Filefile)throwsIOException{
File[]files=file.listFiles();
for(Filefile2:
files){
if(file2.isDirectory()){
copyPhoto(file2);
}elseif(file2.getName().matches(regex)){
BufferedInputStreambis=newBufferedInputStream(newFileInputStream(file2));
byte[]buf=newbyte[1024*20];
intlenght=0;
BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(
"C:
\\Users\\xiawei\\Desktop\\新建文件夹\\"+file2.getName()));
while((lenght=bis.read(buf))!
=-1){
bos.write(buf,0,lenght);
}
bos.close();
bis.close();
}
}
}
}
题目四:
模拟用户登录功能实现。
接收用户输入的用户名和密码,然后和文件中存储的用户名、密码匹配
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.Scanner;
//模拟用户登录功能实现。
接收用户输入的用户名和密码,然后和文件中存储的用户名、密码匹配
publicclassDemo13{
static{
Filefile=newFile("C:
\\Users\\xiawei\\Desktop\\config.properties");
try{
file.createNewFile();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
staticScannersc=newScanner(System.in);
publicstaticvoidmain(String[]args)throwsException{
while(true){
System.out.println("请选择功能A:
注册B:
登录");
Strings=sc.next();
if("a".equalsIgnoreCase(s)){
//注册
register();
}elseif("b".equalsIgnoreCase(s)){
//登录
login();
break;
}else{
System.out.println("您的输入不合法,请输入\"a\"或者\"b\"");
}
}
}
//注册
privatestaticvoidregister()throwsIOException{
System.out.println("请输入用户名:
");
StringAdmin=sc.next();
System.out.println("请输入密码:
");
Stringpassword=sc.next();
Stringregisterline=password+"="+Admin;
BufferedWriterbw=newBufferedWriter(newFileWriter(
"C:
\\Users\\xiawei\\Desktop\\config.properties",true));
bw.write(registerline);
bw.newLine();
System.out.println("注册成功!
您的账户名:
"+Admin+"您的密码:
"+password);
bw.close();
}
//登录
privatestaticvoidlogin()throwsIOException,Exception{
intcount=0;
while(true){
System.out.println("请输入用户名:
");
StringAdmin=sc.next();
System.out.println("请输入密码:
");
Stringpassword=sc.next();
Stringline=password+"="+Admin;
BufferedReaderbr=newBufferedReader(newFileReader(
"C:
\\Users\\xiawei\\Desktop\\config.properties"));
Stringstr=null;
booleanisLogin=false;
while((str=br.readLine())!
=null){
if(line.equals(str)){
isLogin=true;
break;
}
}
br.close();
if(isLogin){
System.out.println(Admin+"欢迎您回来");
break;
}else{
count++;
System.out.println("密码输入错误!
");
if(count==5){
System.out.println("您已多次输入错误,帐号已被锁定30秒,请稍后重试!
");
Thread.sleep(30000);
}
if(count==8){
System.out.println("程序10秒后自动关闭!
");
Thread.sleep(10000);
System.exit(0);
}
}
}
}
}
题目五:
在c盘下有篇txt文本,读取这个文本并统计出这个文本中指定字符的个数(如指定字符为”我”),将该字符与对应的次数输出到当前项目的key.txt中,例如:
输出格式为:
我=10
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.Scanner;
publicclassDemo2{
staticScannersc=newScanner(System.in);
publicstaticvoidmain(String[]args)throwsIOException{
ArrayListlist=newArrayList();
Filefile=newFile("C:
\\Users\\xiawei\\Desktop\\b.txt");
BufferedReaderbr=newBufferedReader(newFileReader(file));
intlen=0;
while((len=br.read())!
=-1){
list.add((char)len);
}
br.close();
intcount=0;
for(Characterc:
list){
if(c=='我'){
count++;
}
}
Stringline="我="+count;
BufferedWriterbw=newBufferedWriter(newFileWriter("key.txt"));
bw.write(line);
bw.close();
}
}
题目七:
在d盘目录下有一个加密文件a.txt(文件里只有英文和数字),密码是“heima”,当密码输入正确时才能读取文件里的数据。
现要求用代码来模拟读取文件的过程,并统计文件里各个字母出现的次数,并把统计结果按照“a:
2个;b:
3个;”的格式输出到d盘的count.txt中
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.Map;
importjava.util.Scanner;
importjava.util.TreeMap;
publicclassDemo6{
staticScannersc=newScanner(System.in);
publicstaticvoidmain(String[]args)throwsException{
//对a.txt文件加密
//setPassword();
//对a.txt文件解密
System.out.println("请输入密码对a.txt解密:
");
while(true){
Stringpas=sc.next();
if("heima".equals(pas)){
keyFile(pas);
break;
}else{
System.out.println("密码输入错误!
请重新输入");
}
}
//格式输出到count.txt
outputCount();
}
privatestaticvoidoutputCount()throwsIOException{
Mapmap=newTreeMap();
BufferedReaderbr=newBufferedReader(newFileReader("D:
\\a.txt"));
intc=0;
while((c=br.read())!
=-1){
charch=(char)c;
if((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')){
map.put(ch,map.containsKey(ch)?
map.get(ch)+1:
1);
}
}
br.close();
BufferedWriterbw=newBufferedWriter(newFileWriter("D:
\\count.txt"));
//输出该文本文件里面每个字符出现的次数
for(Characteri:
map.keySet()){
Stringline=i+":
"+map.get(i)+"个";
bw.write(line);
bw.newLine();
}
bw.close();
}
publicstaticvoidkeyFile(Stringpas)throwsException{
byte[]bt=pas.getBytes();
intsum=0;
for(byteb:
bt){
sum+=b;
}
FileInputStreamfis=newFileInputStream("D:
\\a.txt");
FileOutputStreamfos=newFileOutputStream("D:
\\c.txt");
intlen=0;
while((len=fis.read())!
=-1){
fos.write(len^sum);
}
System.out.println("解密成功");
fos.close();
fis.close();
}
publicstaticvoidsetPassword()throwsFileNotFoundException,IOException{
StringKEY="heima";
Filefile=newFile("D:
\\c.txt");
FileInputStreamfis=newFileInputStream(file);
FileOutputStreamfos=newFileOutputStream("D:
\\a.txt");
intlen=0;
intkey=0;
byte[]bt=KEY.getBytes();
for(byteb:
bt){
key+=b;
}
while((len=fis.read())!
=-1){
System.out.println(len);
len=len^key;
System.out.println(len);
fos.write(len);
}
fos.close();
fis.close();
}
}
题目八:
已知User类,该类有name(String类型)和age(int类型)两个属性,ArrayList排序,要求按照User对象的age的倒序排序。
importjava.util.ArrayList;
/*已知User类,该类有name(String类型)和age(int类型)两个属性,ArrayList排序,
要求按照User对象的age的倒序排序。
*/
publicclassDemo4{
publicstaticvoidmain(String[]args){
ArrayListlist=newArrayList();
list.add(newUser("张三",25));
list.add(newUser("李四",23));
list.add(newUser("赵柳",19));
list.add(newUser("周期",31));
list.add(newUser("王二",28));
sort(list);
}
privatestaticvoidsort(ArrayListlist){
for(inti=0;ifor(intj=i+1;jif(list.get(i).getAge()Users=list.get(i);
list.set(i,list.get(j));
list.set(j,s);
}
}
}
System.out.println(list);
}
}
题目九:
设计一个学生类Student和它的一个子类Undergraduate。
*
(1)Student类有name和age属性,一个包包含两个参数的构造方法,用于给name和age赋值,
*一个show()方法打印Student的属性信息。
*
(2)本科生类Undergraduate增加一个degree(学位)属性,有一个包含三个参数的构造方法,
*前两个参数用于给继