Java代码实现io 防御型编程1)习题自动对练习文件和习题文件进行批改,得到的评价结果存入批改文件中; 4、完成各阶段类设计和编码的单元测试活动
时间: 2024-03-26 09:38:13 浏览: 14
好的,我可以为您提供一个简单的Java代码实现,用于实现io防御型编程中的习题自动批改和单元测试活动。以下是代码示例:
```java
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class ExerciseChecker {
public static void main(String[] args) {
// 读取习题文件和答案文件
File exerciseFile = new File("exercise.txt");
File answerFile = new File("answer.txt");
int[] exercise = readArrayFromFile(exerciseFile);
int[] answer = readArrayFromFile(answerFile);
// 执行评价系统进行批改
int score = evaluate(exercise, answer);
// 将评分结果存入批改文件中
File correctionFile = new File("correction.txt");
writeToFile(correctionFile, "得分:" + score);
}
// 评价系统,对每个答案文件进行评分
private static int evaluate(int[] exercise, int[] answer) {
int score = 0;
for (int i = 0; i < exercise.length; i++) {
if (exercise[i] == answer[i]) {
score++;
}
}
return score;
}
// 读取文件中的整数数组
private static int[] readArrayFromFile(File file) {
int[] array = null;
try (Scanner scanner = new Scanner(file)) {
while (scanner.hasNextInt()) {
int size = scanner.nextInt();
array = new int[size];
for (int i = 0; i < size; i++) {
array[i] = scanner.nextInt();
}
}
} catch (IOException e) {
e.printStackTrace();
}
return array;
}
// 将字符串写入文件
private static void writeToFile(File file, String content) {
try (FileWriter writer = new FileWriter(file)) {
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
以上代码实现了对习题文件和答案文件进行读取,并使用评价系统进行批改,最后将评分结果存入批改文件中。同时,该代码还提供了一个readArrayFromFile()方法和一个writeToFile()方法,用于读取文件中的整数数组和将字符串写入文件。
此外,为了完成各阶段类设计和编码的单元测试活动,可以使用JUnit等测试框架编写测试用例来测试代码的正确性和鲁棒性。这里给出一个简单的测试用例示例:
```java
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ExerciseCheckerTest {
@Test
public void testEvaluate() {
int[] exercise = {1, 2, 3, 4, 5};
int[] answer = {1, 2, 3, 5, 5};
int score = ExerciseChecker.evaluate(exercise, answer);
assertEquals(4, score);
}
}
```
以上测试用例使用JUnit框架,测试了evaluate()方法的正确性。测试用例中调用了evaluate()方法,传入了一个习题数组和一个答案数组,并使用assertEquals()方法断言评分结果应为4分。