读出txt文件中按一定规则存储的题目,以2017年的一次软考题目为例。
效果如下:
StandardExam.java
package com.company.com.fancy;
import java.io.*;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//简易控制台答题
//借鉴《JAVA2实用教程(第五版)》P311
public class StandardExam {
File testFile;
public void setTestFile(File f){
testFile=f;
}
public void startExam(){
Scanner scanner= new Scanner(System.in);
Pattern pattern=Pattern.compile("[A-Z]");//匹配答案
Matcher matcher;
try {
FileReader inOne=new FileReader(testFile);
BufferedReader inTwo=new BufferedReader(inOne);
String s;
while((s=inTwo.readLine())!=null){
if(s.startsWith("【答案】")==false){ //非答案行直接输出
System.out.println(s);
}else { //在答案处停留,因为要在此输入答案
//先获取答案,按个数判断需要输入几次
String strAnswer="";//正确答案
matcher=pattern.matcher(s);
while(matcher.find()){
strAnswer+=matcher.group();
}
int answerNum = strAnswer.length();//当前题目答案数
System.out.printf("请输入答案,共%d个:",answerNum);
String selfAnswer=scanner.nextLine().replace(" ","");//去掉回答中的空格
if(selfAnswer.equals(strAnswer)){//答案是否完全吻合
System.out.println("--------------------正确\n");
}else{
System.out.println("--------------------错误");
System.out.println("【答案】"+strAnswer+"\n");
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Main.java
package com.company.com.fancy;
import java.io.File;
public class Main {
public static void main(String[] args) {
File examFile=new File("ruankao.txt");
StandardExam exam=new StandardExam();
exam.setTestFile(examFile);
exam.startExam();
}
}
ruankao.txt:
(1)以下关于防火墙功能特性的叙述中,不正确的是(1)。
(1)A.控制进出网络的数据包和数据流向
B.提供流量信息的日志和审计
C.隐藏内部IP以及网络结构细节
D.提供漏洞扫描功能
【答案】D
【解析】防火墙是被动防御,无法提供系统漏洞扫描
在程序执行过程中,Cache与主存的地址映射是由(2)完成的。
(2)A.操作系统 B.程序员调度 C.硬件自动 D.用户软件
【答案】C
【解析】典型的存储体系结构分为“高速缓冲存储器(Cache)←→主存←→辅存”三个层次。地址映像的作用之一是将CPU送来的主存地址转换成Cache地址。在程序的执行过程中,Cache与主存的地址映像由专门的硬件电路自动完成。
某四级指令流水线分别完成取指、取数、运算、保存结果四步操作。若完成上述操作的时间依次为8ns、9ns、 4ns、8ns,则该流水线的操作周期应至少为(3)ns 。
(3)A.4 B.8 C.9 D.33
【答案】C
【解析】流水线稳定之后,9s就会完成一个周期
内存按字节编址。若用存储容量为32Kx8bit的存储器芯片构成地址从AOOOOH到DFFFFH 的内存,则至少需要(4)片芯片。
(4)A.4 B.8 C.16 D.32
【答案】B
【解析】DFFFFH-AOOOOH +1=40000H=4*164;因为是按字节编址,所以所需芯片数为:4*164/(32*1024)=8
计算机系统的主存主要是由(5)构成的。
(5)A.DRAM B.SRAM C.Cache D.EEPROM
【答案】A
【解析】
DRAM(Dynamic Random Access Memory),即动态随机存取存储器,最为常见的系统内存。
SRAM(Static Random Access Memory),即静态随机存取存储器。它是一种具有静止存取功能的内存,不需要刷新电路即能保存它内部存储的数据。
Caché,是 一种后关系型数据库。能并发访问同一数据的数据库技术。
EEPROM (Electrically Erasable Programmable read only memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息,重新编程。一般用在即插即用。
以下关于海