1. 程式人生 > >四則運算檔案版實驗總結

四則運算檔案版實驗總結

實驗要求:隨機生成100道四則運算題目,輸入到文件中,再從文件中讀取實現線上作答,並判斷正誤。

源程式:

import java.io.*;
import java.util.Scanner;
public class test2{
  
   public static void main(String [] args)throws IOException
   { 
       PrintStream ps = null;
      int [] c=new int[150];//建立存放答案的陣列
      try 
      {  
          FileOutputStream fos 
= new FileOutputStream("D:\\test.txt"); ps = new PrintStream(fos); for(int i=0;i<100;i++) { ps.print("第"+(i+1)+"題 "); int a= (int)(Math.random()*100); int b=(int)(Math.random()*100); switch((int)(Math.random()*4)) {//將題目輸入到文件中並將正確答案存入陣列 case
0:ps.println(a+"+"+b+"=");c[i]=a+b; ps.println("**************");break; case 1:if(a<b) {int t=a;a=b;b=t;} ps.println(a+"-"+b+"=");c[i]=a-b; ps.println("***************");break; case 2:ps.println(a+"*"+b+"=");c[i]=a*b; ps.println(
"***************");break; case 3:while(b==0) b= (int)(Math.random()*100); ps.println(a+"/"+b+"=");c[i]=a/b; ps.println("***************"); break; } } }catch (IOException ioe) { ioe.printStackTrace(ps); } finally { ps.close(); } Scanner in=new Scanner(System.in); BufferedReader br = null; int [] d=new int[100]; System.out.println("請輸入要做題的個數:"); int n=in.nextInt(); int m=0; try { br = new BufferedReader(new FileReader("D:\\test.txt")); String line=br.readLine(); for(int i=0;i<2*n;i++)//將題目從文件中輸出 { System.out.println(line); if(!(line.equals("***************"))) { //將所做答案存入另一個數組 d[m]=in.nextInt(); m++; } line=br.readLine(); } }catch(IOException e) { e.printStackTrace(); } int q=0; for(int j=0;j<n;j++) { //所做答案與正確答案相比較 if(d[j]==c[j]) { q++; } } int n1=n-q; System.out.println("共答"+n+"題,答對"+q+"題,答錯"+n1+"題."); } }

結果截圖:

 

 總結:開始做的時間在1:50左右,但完成時間在4:30,歷時將近三小時。 原因:對檔案的寫入與讀取操作不夠熟練,不能輕鬆地運用,以及拿到題目後不能快速的建立起思路、整個程式框架等。這個程式中隨機生成題目部分的程式碼是直接把上次寫的直接拿來用的,因此在這兒沒有耽誤時間。在檔案操作這兒,由於不熟練,於是看了看課件及示例程式碼,才開始著手編。把匯入檔案這塊弄好後,執行不成功,以為是檔案匯入方法的問題,經過改變方法還是出現錯誤,仔細檢視錯誤原因才發現是程式碼中的txt文件地址格式不對,在這兒可以說是白白浪費了將近半小時啊。接下來就是將題目從檔案讀取輸出了,這兒也是參考示例程式碼寫的,倒是沒出什麼問題。判斷正誤我用的方法是:將正確答案存入一個數組,將使用者輸入的答案存入另一個數組,兩個陣列進行比對,最後輸出正確與錯誤的題目數量。總之這個實驗我出現了很多不該出的問題,導致白白浪費時間,以及知識掌握不到位,不熟練。