1. 程式人生 > 實用技巧 >Java四則運算第二次課堂完整版

Java四則運算第二次課堂完整版

題目:

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); } }

階段1: 1、定義方法驗證題目是否重複;並將出題引數用子方法定義。

2、定義隨機數生成器子方法,根據出題引數(出題個數、運算元的個數、確定運算元的取值範圍)生成全部的隨機運算元。

階段2: 1、定義方法實現線上答題;全部完成後,顯示答題結果,輸出正確率和錯題。

2、定義方法實現錯題集、錯題重練並記錄錯題的次數功能。

階段三 3、增加倒計時功能,完成定時測試功能。