1. 程式人生 > >四則運算(檔案)

四則運算(檔案)

原始碼:

package pres.liqin.size;
import java.util.*;
//20173522  李秦  信1705-1
class Suan1//生成計算的類
{
    public int x,y,c;//定義兩個變數和一個符號變數
    public Random random=new Random();//定義隨機數
    String m;//生成的計算式儲存咋m裡面
    int fanwei;
    public String shengcheng(int fanwei1)//自動生成數的函式
    {
         this.fanwei=fanwei1;
         c
=random.nextInt(4);//生成符號 String fuhao; x=random.nextInt(fanwei);//生成100以內的自然數 y=random.nextInt(fanwei); if(c==0)//0是加法 { fuhao="+"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else if(c==1)//1是減法 { fuhao
="-"; if(x>=y) { m=String.valueOf(x)+fuhao+String.valueOf(y); } else { m=String.valueOf(y)+fuhao+String.valueOf(x); } } else if(c==2) { fuhao="*"; m
=String.valueOf(x)+fuhao+String.valueOf(y); } else { fuhao="/"; for(int i=0;;i++) { if(y==0) { y=random.nextInt(fanwei); } else { break; } } m=String.valueOf(x)+fuhao+String.valueOf(y); } return m; } public String shuchu()//定義輸出函式 { if(c==0) { System.out.print(m+"="); return (String.valueOf(x+y));//並且返回計算的結果 } else if(c==1) { if(x>=y)//將較大的數放在前面,不能出現負數 { System.out.print(m+"="); return (String.valueOf(x-y)); } else { System.out.print(m+"="); return (String.valueOf(y-x)); } } else if(c==2) { System.out.print(m+"="); return (String.valueOf(x*y)); } else { System.out.print(m+"="); if(x%y==0) { return (String.valueOf(x/y)); } else { if(x>y) { int shang=x/y; int yushu=x-y*shang; return (String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } } public int fanhuic() { return c; } public String jisuan() { if(c==0) { return (String.valueOf(x+y));//並且返回計算的結果 } else if(c==1) { if(x>=y)//將較大的數放在前面,不能出現負數 { return (String.valueOf(x-y)); } else { return (String.valueOf(y-x)); } } else if(c==2) { return (String.valueOf(x*y)); } else { if(x%y==0) { return (String.valueOf(x/y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } public int jianyan(String a[],int s)//檢驗是否有重複的式子,如果有返回0,沒有就返回1 { int flag=1; for(int i=0;i<s;i++) { if(m.equals(a[i]))//陣列a裡面是生成的式子 { flag=0; break; } } return flag; } } import java.util.*; public class Shengcheng { public Random random=new Random(); public Suan1 a=new Suan1();//定義整數運算變數a public Scanner scn=new Scanner(System.in); public String shuju[]=new String[1000000];//定義儲存計算式的陣列 public int flag=0;//定義題目是否有重複 public int m=0; public String daan; public String daan1; int fanwei; public void caidan() { for(int i=0;;i++) { System.out.println("1 , 整數的四則計算"); System.out.println("2 , 退出"); System.out.print("請選擇:"); int t=scn.nextInt(); if(t==1) { System.out.print("請選擇出題的個數:"); int tishu=scn.nextInt(); String zhengque="",cuowu=""; System.out.print("請選擇生成的數範圍:"); fanwei=scn.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu) { shuju[m]=a.shengcheng(fanwei);//將生成的計算式儲存在數組裡面 flag=a.jianyan(shuju, m);//返回是否有重複 if(flag==1)//如果沒有就是1 { System.out.print(m+1+". "); daan=a.shuchu();//輸出式子,將答案儲存在daan裡面 daan1=scn.next();//使用者輸入答案 if(daan1.equals("break"))//使用者不想做題時輸入break跳出 { break; } else if(daan1.equals(daan))//檢查答案是否正確 { System.out.println("回答正確!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答錯誤!!!正確答案是:"+daan);//如果不正確輸出正確答案 cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } System.out.println("正確的數量為:"+zhengque1+"正確的題目是:"+zhengque); System.out.println("錯誤的數量為:"+cuowu1+"錯誤的題目是:"+cuowu); m=0; } } } } import java.io.*; public class Jisuan { public static void main(String[] args) throws IOException { Shengcheng a=new Shengcheng(); FileWriter fw = null; try { //建立字元輸出流 fw = new FileWriter("D:\\test.txt"); for(int i = 0;i<a.m;i++) fw.write(a.shuju[a.m]+"\r\n"); } catch (IOException ioe) { ioe.printStackTrace(); } finally { //使用finally塊來關閉檔案輸出流 if (fw != null) { fw.close(); } } //將答案新增到answer.text文字中 FileWriter fwas = null; try { //建立字元輸出流 fwas = new FileWriter("D:\\answer.txt"); for(int i = 0;i<a.m;i++) fwas.write(a.daan1+"\r\n"); } catch (IOException ioe) { ioe.printStackTrace(); } finally { //使用finally塊來關閉檔案輸出流 if (fwas != null) { fwas.close(); } } File n=new File("D:\\test.txt"); FileInputStream b = new FileInputStream(n); InputStreamReader c=new InputStreamReader(b,"UTF-8"); { BufferedReader bufr =new BufferedReader(c); String line = null; while((line = bufr.readLine())!=null){ a.shuju[a.m]=line; a.m++; } bufr.close(); } c.close(); b.close(); int h=0; String answer[]= new String[h]; File as=new File("D:\\answer.txt"); FileInputStream bs = new FileInputStream(as); InputStreamReader cs=new InputStreamReader(bs,"UTF-8"); { BufferedReader bufrs =new BufferedReader(cs); String lines = null; while((lines = bufrs.readLine())!=null){ answer[h]=lines; h++; } bufrs.close(); } cs.close(); bs.close(); a.caidan(); } }

這次實驗並不難,但我對檔案的操作不太會,很多時間都花在搜尋檔案的操作上面。