英语选词训练程序(Java-Myeclipse)
程序总体实现思路
-
定义列表语法:
(1)根据提示,输入选择的题号。
(2)逐行进行搜索。
- 运用标记每读取一行,自动加一,匹配选择的题号
- 找到选择的题目后,锁定该行,进行后续的操作
(3)将锁定的文本行写到answer.txt文本文件中。
(4)解析:使用Scanner类解析文件,一共有七部分,分别是 1.题号 2.题目要求 3.A选项 4.B选项 5.C选项 6.D选项 7.正确答案。解析出来后放到一个字符串数组answer中。
(5)因为要输出题目要求,所以要输出字符数组的前六个数组元素(除了正确答案),以便让用户看到题目的要求,进行审题,从而选择用户认为正确的答案。
(6)提示用户输入所选答案
(7)进行匹配即与answer数组中的第七项进行匹配。
(8)字符串的相等比较用s.equals(s_2)
(9)输出匹配提示信息。
程序代码块
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class test {
public static void main(String args[]) {
File file_1=new File("English.txt");
File file_2=new File("answer.txt");
int number;
try {
System.out.println("请输入您选择的题号:");
//输入所选择的题号
Scanner reader_1=new Scanner(System.in);
int question=reader_1.nextInt();
//解析题号,以后与输入的数值进行匹配
Scanner sc_1=new Scanner(file_1);
sc_1.useDelimiter("[^0123456789]+");
while(sc_1.hasNextInt()){
number=sc_1.nextInt();
if(question==number){//匹配成功,将对应的题目行写入到answer.txt文件中,后边输出详细题意
FileReader inOne = new FileReader(file_1);
BufferedReader inTwo=new BufferedReader(inOne);
String str=null;
int n=0;
FileOutputStream out=new FileOutputStream(file_2);
while((str=inTwo.readLine())!=null){
n=n+1;
if(n==question){
byte[] b=str.getBytes();
out.write(b);
}
}
out.close();
inTwo.close();
}
}
//是否是匹配成功,并且提示信息
System.out.println("所选择题目详细信息:");
int i=0;
Scanner sc_2=new Scanner(file_2);
sc_2.useDelimiter("#");
String[] answer=new String[7];
while(sc_2.hasNext()){
answer[i]=sc_2.next();
i=i+1;
}
int d=0;
for(d=0;d<6;d++){
System.out.println(answer[d]);
}
System.out.print("请输入您选择的答案:");
Scanner sc=new Scanner(System.in);
sc.useDelimiter("\n");
String s = sc.nextLine();//输入你选择的正确答案
//将用户选择的题目进行解析,判断回答是否正确,正确与否均给出提示
String s_2=answer[6];
if(s.equals(s_2)){
System.out.println("回答正确,very good!!!");
}else{
System.out.println("回答错误,再接再厉!!!");
}
//将answer.txt文件清空
FileWriter fileWriter =new FileWriter(file_2);
fileWriter.write("");
fileWriter.flush();
fileWriter.close();
}catch(IOException e) {
System.out.println(e);
}
}
}