1. 程式人生 > >將100道計算題輸出至txt檔案,再讀取檔案至控制檯,在控制檯中輸入答案並評判對錯

將100道計算題輸出至txt檔案,再讀取檔案至控制檯,在控制檯中輸入答案並評判對錯

我在課堂上基本完成了輸出100道題和建立文件,但是因為對輸入輸出流不熟悉,所以並沒有實現將輸出的計算題匯出到文件裡,在課下我又請教了宿舍的大佬,基本完成如下:

原始碼:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class four1 {
static    int
[]sum = new int[100]; public void input() throws IOException { int nummin, nummax; String str1; String str2; char []ch= {'+','-','*','/'}; int cha; File f = new File("C:/D/log.txt"); FileOutputStream fop = new FileOutputStream(f);
// 構建FileOutputStream物件,檔案不存在會自動新建 OutputStreamWriter writer = new OutputStreamWriter(fop, "UTF-8"); // 構建OutputStreamWriter物件,引數可以指定編碼,預設為作業系統預設編碼,windows上是gbk for(int i=0;i<100;i++) { nummax=(int)(Math.random()*1000); nummin=(int)(Math.random()*1000); cha
=(int)(Math.random()*4); if(ch[cha]=='+'||ch[cha]=='-') { if(ch[cha]=='+') sum[i]=nummax+nummin; else sum[i]=nummax-nummin; str1=Integer.toString(nummax); str2=Integer.toString(nummin); writer.append(str1); writer.append(ch[cha]); writer.append(str2); writer.append("="); } else if(ch[cha]=='*') { sum[i]=nummax*nummin; nummax=(int)(Math.random()*100); nummin=(int)(Math.random()*100); str1=Integer.toString(nummax); str2=Integer.toString(nummin); writer.append(str1); writer.append(ch[cha]); writer.append(str2); writer.append("="); } else if(ch[cha]=='/') { nummin=(int)(Math.random()*10)+1; while(nummax%nummin!=0) { nummax=(int)(Math.random()*1000); nummin=(int)(Math.random()*10)+1; } sum[i]=nummax/nummin; str1=Integer.toString(nummax); str2=Integer.toString(nummin); writer.append(str1); writer.append(ch[cha]); writer.append(str2); writer.append("="); } // 寫入到緩衝區 writer.append("\r\n"); // 換行 } writer.close(); // 重新整理快取衝,寫入到檔案,如果下面已經沒有寫入的內容了,直接close也會寫入 // 關閉寫入流,同時會把緩衝區內容寫入檔案,所以上面的註釋掉 fop.close(); // 關閉輸出流,釋放系統資源 FileInputStream fip = new FileInputStream(f); // 構建FileInputStream物件 InputStreamReader reader = new InputStreamReader(fip, "UTF-8"); // 構建InputStreamReader物件,編碼與寫入相同 StringBuffer sb = new StringBuffer(); while (reader.ready()) { sb.append((char) reader.read()); // 轉成char加到StringBuffer物件中 } reader.close(); // 關閉讀取流 fip.close(); // 關閉輸入流,釋放系統資源 } }
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;


public class four2 {
     public void name()throws Exception
        {
                String in=in("C:/D/log.txt");
                System.out.println(in);
        }
        private String in(String file) throws IOException {
            // TODO Auto-generated method stub
            int num;

            @SuppressWarnings("resource")
            Scanner in=new Scanner(System.in);
            File f=new File(file);
            @SuppressWarnings("resource")
            BufferedReader bf=new BufferedReader(new FileReader(f));
            String content="";
            for(int i=0;i<100;i++)
            {
                content=bf.readLine();
                System.out.println(content);
                num=in.nextInt();
                if(num==four1.sum[i])
                    System.out.println("對");
                else 
                    System.out.println("不對");
            }

            
            return null;
        }


}
import java.util.Scanner;

public class mian {
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
       @SuppressWarnings({ "unused", "resource" })
    Scanner in=new Scanner(System.in);
       four1 f1=new four1();
       f1.input();
       four2 f2=new four2();
       f2.name();
   }


}