四则运算

//版本一
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(); } } } 通过这道题,我掌握一个很重要的思路就是可以分成两个模块,先把题目都导入文件里,然后再从文件里去读。
可以运用数组去存储答案,或者把答案写到文件里然后再去读
另外一定一定要注意用完及时关闭文件,缓冲流等。
以后要学会去模块化处理问题,不能把所有的都堆在一起,然后写完一段就去测试,不要写完以后再去调
另外意识到自己基础还是很差,别人很快做完了,而自己却花了很长时间,后期必须加强实战性的练习
原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/9964765.html