生成題目輸出到文件javascript
從文件寫入html
eval
方法直接計算隨機生成的算式的值,並和用戶的輸入做比較for (i = 0; i < n; i++) { int a = random.nextInt(5) + 1;//1-5個運算符 int[] number = new int[a + 1];//建立一個number數組 String ex = new String(); for (int j = 0; j <= a; j++) {//生產a+1個數字,即2-6個數字 number[j] = random.nextInt(100) + 1;//生成1-100的整數 } for (int j = 0; j < a; j++) { int s = random.nextInt(4);//隨機生成運算符下標 ex += String.valueOf(number[j]) + String.valueOf(op[s]);//添加一對數字和運算符 } ex += String.valueOf(number[a]);//在尾端補上一個數字 System.out.println(ex + "=");
int ua = reader.nextInt();//用戶輸入答案 ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine se1 = manager.getEngineByName("js"); ScriptEngine se2 = manager.getEngineByName("js"); String str=ex+"="+"="+ua;//將用戶答案邏輯式放在字符串str中 Boolean result =(Boolean)se1.eval(str);//用eval方法計算用戶答案邏輯式 String ca="="+se2.eval(ex);//生成correct_answer字符串存正確答案 jud.judgeFormula(result,ca);
if(s==2){//計算真分數乘法運算 int nu[]=new int[2]; nu[0]=num[0]*num[2]; nu[1]=num[1]*num[3]; ca=ex+f.yuefen(nu[0],nu[1]);//將計算結果約分 } else if(s==0){//計算真分數加法運算 int nu_1[]=new int[2]; nu_1[0]= num[0]*num[3]+num[1]*num[2]; nu_1[1]= num[1]*num[3]; ca=ex+f.yuefen(nu_1[0],nu_1[1]); } else {//計算真分數減法運算 int nu_2[]=new int[2]; nu_2[0]= num[0]*num[3]-num[1]*num[2]; nu_2[1]= num[1]*num[3]; if(nu_2[0]<0){//分子爲負數時 nu_2[0]=-nu_2[0];//取反 ca=ex+"-"+f.yuefen(nu_2[0],nu_2[1]);//加上負號 } else ca=ex+f.yuefen(nu_2[0],nu_2[1]); }
public String yuefen(int m,int n){//分數約分 FundCalculate f=new FundCalculate(); int temp=f.gcd(m,n); m/=temp; n/=temp; String ca=String.valueOf(m)+"/"+String.valueOf(n); return ca; }
public int decide(int x,int y){//判斷是否整除 Random random=new Random(); if(x%y!=0){ y=random.nextInt(100)+1; return decide(x,y); } else{ return y; } }
for (int j = 0; j < a; j++) { switch(flag){ case 0: s[0]= random.nextInt(4);//隨機生成運算符下標 ex += String.valueOf(number[j]) + String.valueOf(op[s[0]]);//添加一對數字和運算符 if(s[0]==3){number[j+1]=f.decide(number[j],number[j+1]);} break; case 1: s[1]= random.nextInt(4);//隨機生成運算符下標 ex+="("+String.valueOf(number[j]) + String.valueOf(op[s[1]]);//添加左括號和數字和運算符 if(s[1]==3){number[j+1]=f.decide(number[j],number[j+1]);} flag++; break; case 2: s[2]=random.nextInt(4); ex+=String.valueOf(number[j]) + ")"+String.valueOf(op[s[2]]);//添加右括號和數字和運算符 if(s[2]==3){ switch(s[1]){//區分以前括號裏運算結果對後面數取整 case 0: number[j+1]=f.decide(number[j]+number[j-1],number[j+1]); break; case 1: number[j+1]=f.decide(number[j]-number[j-1],number[j+1]); break; case 2: number[j+1]=f.decide(number[j]*number[j-1],number[j+1]); break; case 3: number[j+1]=f.decide(number[j]/number[j-1],number[j+1]); break; default:; } }
import java.io.*; public class WAndRFile { String ua=new String();//用戶答案 public void writeToFile(String str){ File fw=new File("practice.txt");//寫入的文件 try{ Writer out=new FileWriter(fw);//指向目的地輸出流 BufferedWriter bw=new BufferedWriter(out); bw.write(str);//寫入字符串str bw.newLine();//換行 bw.close();//高級流關閉 out.close();//關閉底層流 } catch (IOException e){ e.printStackTrace(); } } public String readFromFile(){ File fr=new File("practice.txt");//讀取的文件 try{ Reader in=new FileReader(fr);//指向源的輸入流 BufferedReader br=new BufferedReader(in); while (br.readLine()!=null) ua=br.readLine(); br.close(); in.close();; } catch (IOException e){ e.printStackTrace(); } return ua; } }
含真分數
java
不含真分數git
https://gitee.com/thz666/20175212_tong_haozhen/tree/master/src/四則運算編程
if(nu_2[0]<0){//分子爲負數時 nu_2[0]=-nu_2[0];//取反 ca=ex+"-"+f.yuefen(nu_2[0],nu_2[1]);//加上負號 }
從新構造答案結構,使其符合數學標準數組
Boolean result=ua.equals(ca); jud.judgeFormula(result,ca);
將上述代碼放在循環體中微信
public int decide(int x,int y){//判斷是否整除 Random random=new Random(); if(x%y!=0){ y=random.nextInt(100)+1; return decide(x,y); } else{ return y; } }
PSP | Personal Software Process Stages | 預估耗時 | 實際耗時 |
---|---|---|---|
Planning | 計劃 | 30min | 20min |
Estimate | 估計這個任務須要多少時間 | 10min | 10min |
Development | 開發 | 10min | 10min |
Analysis | 需求分析 (包括學習新技術) | 40min | 30min |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 5min | 10min |
Design | 具體設計 | 1h | 1h |
Coding | 具體編碼 | 3h | 4h |
· Code Review | 代碼複審 | 30min | 30min |
Test | · 測試(自我測試,修改代碼,提交修改) | 1h | 1h |
Test Report | 測試報告 | 30min | 30min |
Size Measurement | 計算工做量 | 10min | 10min |
Postmortem & Process Improvement Plan | 過後總結, 並提出過程改進計劃 | 30min | 30min |
合計 | 7h35min | 8h50min |