將100道計算題輸出至txt檔案,再讀取檔案至控制檯,在控制檯中輸入答案並評判對錯
阿新 • • 發佈:2018-11-15
我在課堂上基本完成了輸出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(); } }