//版本一
package 小学生在线版出题系统;//16:50
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
public class Arithmetic2 {
public static void main(String[] args)
{
int[] answer=new int[100];
try {
File file=new File("E:\Test.txt");
if(file.exists()) {file.delete();}
BufferedWriter out = new BufferedWriter(new FileWriter(file));
int number1=0;
int number2=0;
Scanner sc=new Scanner(System.in);
for(int n=0;n<100;n++)
{//System.out.println("第"+(n+1)+"道");
int i=(int)(1+Math.random()*100);
int j=(int)(1+Math.random()*100);
String[]operator={"+","-","*","/"};
Random r=new Random();
int num=r.nextInt(4);//该方法的作用是生成一个随机的int值,该值介于[0,4)的区间,也就是0到4之间的随机int值,包含0而不包含4
String str1=i+operator[num]+j;
if((operator[num]!="/")&&(operator[num]!="-")) {
//System.out.println(str1+"=");
//System.out.println(str1+"=");
if(operator[num]=="+") {
// pw.println(str1+"="+(i+j));
//out.write(str1+"="+(i+j));
out.write(str1+"=");
out.newLine();
out.write("a");
out.newLine();
answer[n]=i+j;
}
else if(operator[num]=="*") {
// pw.println(str1+"="+(i*j));
// out.write(str1+"="+(i*j));
out.write(str1+"=");
out.newLine();
out.write("a");
out.newLine();
answer[n]=i*j;
}
}
else if(operator[num]=="/") {
i=(int)(1+Math.random()*10);
j=(int)(1+Math.random()*10);
// System.out.println((i*j)+"/"+j+"=");
// pw.println((i*j)+"/"+j+"="+i);
// out.write((i*j)+"/"+j+"="+i);
out.write((i*j)+"/"+j+"=");
out.newLine();
out.write("a");
out.newLine();
answer[n]=i;
}
else {
if(i>j) { //System.out.println(i+"-"+j+"=");
//pw.println(i+"-"+j+"="+(i-j));
//out.write(i+"-"+j+"="+(i-j));
out.write(i+"-"+j+"=");
out.newLine();
out.write("a");
out.newLine();
answer[n]=i-j;
}
else {
//System.out.println(j+"-"+i+"=");
//pw.println(j+"-"+i+"="+(j-i));
//out.write(j+"-"+i+"="+(j-i));
out.write(j+"-"+i+"=");
out.newLine();
out.write("a");
out.newLine();
answer[n]=j-i;
}
}
}
// pw.flush();
// pw.close();
// fw.close();
out.close();
System.out.println("文件创建成功");
int m=0;
BufferedReader br=new BufferedReader(new FileReader(file));
String str1;
str1=br.readLine();
while(str1!=null) {
if(!(str1.equals("a"))) {
//if(str1.length()!=1) {
System.out.println(str1);
int result=sc.nextInt();
if(result==answer[m]) {System.out.println("正确");number1++;}
else {
System.out.println("错误,正确答案为"+answer[m]);number2++;}
System.out.println("答对:"+number1+"道");
System.out.println("答错:"+number2+"道");
m++;
}
str1=br.readLine();
}
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
//版本二
package 小学生在线版出题系统;
import java.io.BufferedReader;
import java.io.BufferedWriter;
//注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0.
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.Scanner;
public class Arithmetic1 {
public static void main(String[] args)
{
try {
File file=new File("E:\test1.txt");
if(file.exists()) {file.delete();}
BufferedWriter out = new BufferedWriter(new FileWriter(file));
int result;
int number=0;
Scanner sc=new Scanner(System.in);
for(int n=0;n<100;n++)
{//System.out.println("第"+(n+1)+"道");
int i=(int)(1+Math.random()*100);
int j=(int)(1+Math.random()*100);
String[]operator={"+","-","*","/"};
Random r=new Random();
int num=r.nextInt(4);//该方法的作用是生成一个随机的int值,该值介于[0,4)的区间,也就是0到4之间的随机int值,包含0而不包含4
String str1=i+operator[num]+j;
if((operator[num]!="/")&&(operator[num]!="-")) {
//System.out.println(str1+"=");
//System.out.println(str1+"=");
if(operator[num]=="+") {
// pw.println(str1+"="+(i+j));
//out.write(str1+"="+(i+j));
out.write(str1+"=");
out.newLine();
out.write("a");
out.newLine();
out.write(" "+(i+j));
out.newLine();
}
else if(operator[num]=="*") {
// pw.println(str1+"="+(i*j));
// out.write(str1+"="+(i*j));
out.write(str1+"=");
out.newLine();
out.write("a");
out.newLine();
out.write(" "+(i*j));
out.newLine();
}
}
else if(operator[num]=="/") {
i=(int)(1+Math.random()*10);
j=(int)(1+Math.random()*10);
//System.out.println((i*j)+"/"+j+"=");
// pw.println((i*j)+"/"+j+"="+i);
// out.write((i*j)+"/"+j+"="+i);
out.write((i*j)+"/"+j+"=");
out.newLine();
out.write("a");
out.newLine();
out.write(" "+(i));
out.newLine();
}
else {
if(i>j) { //System.out.println(i+"-"+j+"=");
//pw.println(i+"-"+j+"="+(i-j));
//out.write(i+"-"+j+"="+(i-j));
out.write(i+"-"+j+"=");
out.newLine();
out.write("a");
out.newLine();
out.write(" "+(i-j));
out.newLine();
}
else {
//System.out.println(j+"-"+i+"=");
//pw.println(j+"-"+i+"="+(j-i));
//out.write(j+"-"+i+"="+(j-i));
out.write(j+"-"+i+"=");
out.newLine();
out.write("a");
out.newLine();
out.write(" "+(j-i));
out.newLine();
}
}
}
out.close();
// pw.flush();
// pw.close();
// fw.close();
BufferedReader br=new BufferedReader(new FileReader(file));
String str1,str;
str1=br.readLine();
while(str1!=null) {
if(str1.equals("a")) {result=sc.nextInt();
str1=br.readLine();
str=" "+result;
if(str.equals(str1)) { System.out.println("正确为"+str1);number++;}
else {
System.out.println("错误,正确答案为"+str1);
}
}
else System.out.println(str1);
str1=br.readLine();
}
br.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
通过这道题,我掌握一个很重要的思路就是可以分成两个模块,先把题目都导入文件里,然后再从文件里去读。
可以运用数组去存储答案,或者把答案写到文件里然后再去读
另外一定一定要注意用完及时关闭文件,缓冲流等。
以后要学会去模块化处理问题,不能把所有的都堆在一起,然后写完一段就去测试,不要写完以后再去调
另外意识到自己基础还是很差,别人很快做完了,而自己却花了很长时间,后期必须加强实战性的练习