[Java] 纯文本查看 复制代码
package exercise;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Properties;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) throws Exception {
//手动输入题目总数(本例因不能自动识别行数而需要手动输入题数总数,所以不太灵活)
System.out.println("请输入总题数");
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
//标准答案文件的加载
Properties ansProp = new Properties();
FileReader fr0 = new FileReader("C:\\Users\\pc\\Desktop\\rule\\answer.properties");
ansProp.load(fr0);
//分数文件的加载
Properties scoreProp = new Properties();
FileReader fr1 = new FileReader("C:\\Users\\pc\\Desktop\\rule\\score.properties");
scoreProp.load(fr1);
PrintWriter pw = new PrintWriter("成绩.txt");
//指向全部学生所做答案文件所在的文件夹
Properties stuProp = new Properties();
File dir = new File("C:\\Users\\pc\\Desktop\\ans");
File[] allScores = dir.listFiles();
for (File file : allScores) {
//获取学生姓名,要求:保存学生所做答案的文件,要命名为姓名.properties
String sName=file.getName().substring(0, file.getName().length()-11);
FileReader fr = new FileReader(file);
stuProp.load(fr);
//定义总分变量
double sum=0;
for(int i = 1;i<=num;i++){
String stuAns = stuProp.getProperty(""+i); //读取学生第i题答案
String ans=ansProp.getProperty(""+i); //读取第i题标准答案
String scoreStr=scoreProp.getProperty(""+i); //读取第i题分数
int score=Integer.parseInt(scoreStr);
//我的得分规则: 完全正确:全分; 少选:半分; 选错:无分 !!!要求答案有序不重复!!!
if(stuAns.equals(ans)){
sum+=score;
}else if(ans.contains(stuAns)){
sum+=score/2;
}else{
sum+=0;
}
}
pw.println(sName+"="+sum);
}
pw.close();
}
}