1. 程式人生 > 實用技巧 >java四則運算第三階段

java四則運算第三階段

題目:

階段3:

1、可定製(數量):輸入大的出題數量值,測試一下系統是否崩潰,反向查詢系統是否優化的餘地;

2、定製運算元的個數;

3、定製是否有乘除法;

4、定製是否有括號(隨機加入)

5 、定製數值範圍(確定運算元的取值範圍)

原始碼:

package yunsuan;

import java.util.Scanner;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class SiZeYunSuan3 {
    
private static int correct=0; //獲取運算子 public static String getOp(int index) { String string = ""; switch (index) { case 0: string = "+"; break; case 1: string = "-"; break; case 2: string = "*";
break; case 3: string = "/"; break; } return string; } //輸出介面 public static void Print() { System.out.println("************************"); System.out.println(" 1.引數設定 "); System.out.println(
" 2.小學二年級口算題 "); System.out.println(" 3.小學三年級口算題 "); System.out.println(" 4.小學四年級口算題 "); System.out.println(" 5.錯題集 "); System.out.println("************************"); } //引數設定 public static void Canshu(ShuZhi sz) { Scanner con=new Scanner(System.in); System.out.print("請輸入題目數量:"); sz.N=con.nextInt(); System.out.print("請輸入運算元個數:"); sz.n=con.nextInt(); System.out.print("請輸入最大範圍:"); sz.max=con.nextInt(); } //生成隨機數 public static void Random(int[] number,int[] ope,ShuZhi sz) { for(int i=0;i<sz.N*sz.n;i++) { number[i]=(int)(Math.random()*sz.max+1); } for(int j=0;j<sz.N*(sz.n-1);j++) { ope[j]=(int)(Math.random()*4+0); } } //題目生成字串 public static void Into_str(String[] str,int[] number,int[] ope,ShuZhi sz) { int i=0,j=0; for(int p=0;p<sz.N;p++) { String s1=" "; for(int m=0;m<(sz.n-1);m++) { s1=s1+String.valueOf(number[i])+getOp(ope[j]); i++;j++; } str[p]=s1+String.valueOf(number[i]); System.out.println(str[p]); } } //輸出題目 public static void Output1(String[] str,ShuZhi sz,String[] mis) { Scanner con=new Scanner(System.in); int j=0; for(int i=0;i<sz.N;i++) { System.out.println("("+(i+1)+")"+str[i]+"="); String answer1=con.next(); if(answer1.equals(Calculate(str[i]))) { System.out.println("回答正確!"); correct++; } else { System.out.println("回答錯誤!"); mis[j]=str[i]; j++; } } System.out.println("本次做題總數:"+sz.N+" 正確數:"+correct+" 錯題數:"+(sz.N-correct)+" 正確率:"+((correct*100)/sz.N)+"%"); } //判斷是否重複 public static int judge(String[] str,ShuZhi sz) { int f=1; for(int i=0;i<sz.N;i++) { for(int j=0;j<i;j++) { if(str[i].equals(str[j]))f=0; } } return f; } //計算結果函式 public static String Calculate(String s) { ScriptEngineManager scriptEngineManager = new ScriptEngineManager(); ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn"); String n=s; String result=""; try { result = String.valueOf(scriptEngine.eval(n)); //System.out.println(result); } catch (ScriptException e) { e.printStackTrace(); } return result; } /*//計算題目結果 public static void Calculate_timu(String[] str,String[] result,ShuZhi sz) { for(int i=0;i<sz.N;i++) { result[i]=Calculate(str[i]); System.out.println(result[i]); } }*/ //錯題集 public static void Output_mis(String[] mis,ShuZhi sz) { Scanner con=new Scanner(System.in); for(int j=0;j<sz.N-correct;j++) { System.out.println("("+(j+1)+")"+mis[j]+"="); String answer2=con.next(); if(answer2.equals(Calculate(mis[j]))) { System.out.println("回答正確!"); } else System.out.println("回答錯誤!"); } } public static void main(String[] args) { ShuZhi sz=new ShuZhi(); sz.n=2; sz.N=30; sz.max=100; SiZeYunSuan3 si=new SiZeYunSuan3(); int f=1; int[] number=new int[100]; int[] ope=new int[100]; String[] str=new String[100]; String[] mis=new String[100]; Canshu(sz); Random(number,ope,sz); //隨機生成數字 Into_str(str,number,ope,sz); //題目生成字串 //f=judge(str,sz); //判斷是否重複 Output1(str,sz,mis); //輸出判斷正誤 System.out.println("\n錯題集:"); Output_mis(mis,sz); } }

這個程式碼仍需要完善,後續會有