1. 程式人生 > >05-檔案與流-課堂測試(四則運算)

05-檔案與流-課堂測試(四則運算)

程式設計思想

首先根據題目要求,需要寫出一個程式,能夠實現,隨機生成100個四則運算,並將其輸入進入Test.txt檔案中,然後從該檔案中一行一行進行輸出,並於正確答案進行比較,判斷是否正確。

然後開始程式設計

1.實現隨機生成100道四則運算,並與正確答案進行比較,在控制檯進行輸入輸出;

2.連線檔案,將隨機生成的100道四則運算,按行輸出到檔案中;

3.一行一行將檔案中的100道四則運算,重新輸出到控制檯上;

4.解決按行輸出算式計算結果,並與正確答案進行比較的問題(利用陣列)。

最後完成題目。

遇到的問題

1.開始把問題想錯,程式只能實現,做一道題,將自己的答案與正確答案進行比較之後才能輸入至文字檔案,而不能先將100道輸入檔案,然後輸出。

2.在第4步按行比較判斷,程式總是丟擲異常,最後發現是陣列出了問題,給陣列賦長度之後解決了問題。

開始與完成時間:14:00 - 16:30

原始碼

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.*;

public class suijishengcheng {
    
    //四則運算計算
    int a,b;
    public int add(int a,int b) {
        return
a+b; } public int reduce(int a,int b) { return a-b; } public int multiplication(int a,int b) { return a*b; } public int division(int a,int b) { if(b!=0) return a/b; else return 0; } public static void main(String[] args) {
int sum = 0;//記錄總成績,每題10分 int[] jieguo = new int[1000]; suijishengcheng sj = new suijishengcheng();//定義物件,便於四則運算加減乘除的呼叫 Scanner in = new Scanner(System.in); PrintWriter out = null;//輸出檔案的使用 try { out = new PrintWriter("Test.txt"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } for (int i = 1;i <=100; i++) { int a = (int) Math.round(Math.random() * 100); int b = (int) Math.round(Math.random() * 100); int m= (int) Math.round(Math.random() * 3); switch(m) { case 0: {while(b==0){ b = (int) Math.round(Math.random() * 100); } jieguo[i] = sj.division(a, b); out.println(a+"/"+b+"="); break; } case 1: { jieguo[i] =sj.multiplication(a, b); out.println(a+"*"+b+"="); break; } case 2: jieguo[i] = sj.add(a, b); out.println(a+"+"+b+"="); break ; case 3: jieguo[i] = sj.reduce(a, b); out.println(a+"-"+b+"="); break ; } } //System.out.println("成績"+sum); //out.println("成績:"+sum); out.close(); try { FileReader fr = new FileReader("Test.txt");//需要讀取的檔案路徑 BufferedReader br = new BufferedReader(fr); String s = br.readLine(); for(int j = 1;j<=100;j++) { while(s!=null)//如果當前行不為空 { System.out.println(s);//列印當前行 /*int c = in.nextInt(); if(c == jieguo[j]) { sum += 10; System.out.println("恭喜答案正確"); } else { System.out.println("抱歉,答案錯誤"); }*/ s= br.readLine();//讀取下一行 } } br.close();//關閉BufferReader流 fr.close(); //關閉檔案流 }catch(IOException e)//捕捉異常 { System.out.println("指定檔案不存在");//處理異常 } } }