前言
记录一下做过的题目,虽然作为入门题目很简单,不过还是可以学到东西的hh。
程序设计一 上机实践
题目:
完成上机实践10.13的上机实践内容,请给每一条语句加上注释
AnalysisResult类
package org.实验十.上机实践;
import java.io.*;
public class AnalysisResult {
public static void main(String args[]) {
File fRead = new File("D:/score.txt"); //创建文件对象,读对象
File fWrite = new File("socreAnalysis.txt"); //写的文件对象
try{
Writer out = new FileWriter(fWrite,true); //以尾加方式创建指向文件fWrite的out流
BufferedWriter bufferWrite = new BufferedWriter(out); //创建指向out的bufferWrite流
Reader in = new FileReader(fRead); //创建指向文件的fRead的in流
BufferedReader bufferRead = new BufferedReader(in); //创建指向in的bufferRead流
String str = null;
while((str=bufferRead.readLine())!=null) { //如果还有数据可以读,进入循环
double totalScore= Fenxi.getTotalScore(str); //调用Fenxi类的方法求得学生总分
str = str+" 总分:"+totalScore;
System.out.println(str); //在本地编译器输出
bufferWrite.write(str); //写出去
bufferWrite.newLine(); //插入一个换行符
}
bufferRead.close(); //关闭bufferRead流
bufferWrite.close(); //关闭bufferWrite流
}
catch(IOException e) {
System.out.println(e.toString());
}
}
}
Fenxi类
package org.实验十.上机实践;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Fenxi {
public static double getTotalScore(String s) { //得到总分
Scanner scanner = new Scanner(s);
scanner.useDelimiter("[^0123456789.]+"); //Scanner对象可以调用useDelimiter方法,将一个正则表达式作为分隔标记
//和正则表达式匹配的字符都是分割标记
//正则表达式,是一个含有特殊意义的字符串
double totalScore=0;
while(scanner.hasNext()){ //如果还有数据要读,进入循环
try{
double score = scanner.nextDouble();
totalScore = totalScore+score;
}
catch(InputMismatchException exp){ //如果有异常,执行下面的内容
String t = scanner.next(); //scanner此时读的是s中的内容
}
}
return totalScore;
}
}
程序设计二 列出文件名称
题目:
请完成程序设计:列出当前文件夹下全部单位文件名称:
文件存储目录为:“C:\ch10”;
文件扩展名为:“.txt”。
ch10文件夹目录如下:
RFname类
package org.实验十;
import java.io.File;
public class RFname {
//如果文件夹下嵌套文件夹,就用递归的方式输出
private static void showList(File file) {
if (file.isDirectory()) {//如果是目录
System.out.println("文件夹:" + file.getName());
File[] listFiles = file.listFiles();//获取当前路径下的所有文件和目录,返回File对象数组
for (File f : listFiles) {//将目录内的内容对象化并遍历
showList(f);
}
} else if (file.isFile()) {//如果是文件
System.out.println("文件:" + file.getName());
}
}
public static void main(String[] args) {
File file = new File("D:/ch10");
showList(file);
}
}
tips
-
请提前在指定目下新建文件,并将学生分数填入。
-
sorce.txt
文件内容如下:姓名:张三,数学72分,物理67分,英语70分. 姓名:李四,数学92分,物理67分,英语70分. 姓名:周五,数学68分,物理67分,英语70分.
程序设计三
题目:
请完成程序设计:模拟完成物资供给单位信息,前端及服务端的信息交互过程:
(1)创建一个信息存储类,属性为:“单位性质”,“单位名称”、“联系电话”、“单位地址”;
(2)创建单位信息对象“山东工商学院”;
(3)将山东工商学院单位信息存储于本地“C:\ch10\山东工商学院单位信息.txt”文件中;
(4)读取“C:\ch10\山东工商学院单位信息.txt”文件,分别显示山东工商学院单位全部信息内容。
xinxijiaohu类
package org.实验十.信息存储;
import org.实验十.信息存储.Unit_Info;
import java.io.*;
public class xinxijaohu {
public static void main(String[] args){
Unit_Info Sdtbu = new Unit_Info("山东工商学院","事业单位","0535-123456","山东省烟台市莱山区滨海路");
try{
File file=new File("D:/ch10/山东工商学院单位信息.txt");
FileOutputStream fileout=new FileOutputStream(file);
ObjectOutputStream objectout=new ObjectOutputStream(fileout);
objectout.writeObject(Sdtbu);
objectout.close();
}
catch(IOException event){
System.out.println(event);
}
try{
FileInputStream filein=new FileInputStream("D:/ch10/山东工商学院单位信息.txt");
ObjectInputStream objectin=new ObjectInputStream(filein);
Unit_Info show_Sdtbu=(Unit_Info) objectin.readObject();
objectin.close();
System.out.println("单位信息:"+show_Sdtbu.nameString);
System.out.println("单位属性:"+show_Sdtbu.proString);
System.out.println("单位电话:"+show_Sdtbu.phone_num);
System.out.println("单位地址:"+show_Sdtbu.addString);
}
catch(ClassNotFoundException event){ // 异常对应objectin.readObject()
System.out.println("无法读出对象");
}
catch(IOException event){
System.out.println(event);
}
}
}
信息存储类
package org.实验十.信息存储;
import java.io.Serializable;
public class Unit_Info implements Serializable {//注意,要实现这个借口
public String nameString,proString,phone_num,addString;
Unit_Info(String n,String ps,String pn,String a){
nameString=n;
proString=ps;
phone_num=pn;
addString=a;
}
}
tips
- 信息存储类要实现
Serializable
接口,否则无法正常写入文件数据。