该程序能自动生成四则运算。java
须要有四种判断.要根据定义的范围输出题目.可生成真分数类计算式编程
录入结果后能判断对错。dom
有单独类提早知晓计算结果.有单独类可储存现有输入结果.二者能够比较.可统计输出与输入结果相比较的正确率。学习
设计三个难度,对应运算符的多少以及是否加入括号
设计两种类,一种用来生成题目,一种用来计算题目
计算:现将中缀表达式转换为后缀,在进行计算测试
完善了上次的代码。this
import java.util.Random; public class NewProject extends SetNum{ public String Front(){ String result; switch (getC()){ case 0: result = getA()+Operator[getB()]; break; case 1: result = getA()+Operator[getB()]+getA()+Operator[getB()]; break; default: result = getA()+Operator[getB()]+getA()+Operator[getB()]+getA()+Operator[getB()]; } return result; } public String Middle(){ String result; switch (getC()){ case 0: result = getA()+""; break; case 1: result ="("+getA()+Operator[getB()]+getA()+")"; break; default: result = "("+getA()+Operator[getB()]+"("+getA()+Operator[getB()]+getA()+")"+Operator[getB()]+getA()+")"; } return result; } public String End(){ String result; switch (getC()){ case 0: result = Operator[getB()]+getA(); break; case 1: result = Operator[getB()]+getA()+Operator[getB()]+getA(); break; default: result = Operator[getB()]+getA()+Operator[getB()]+getA()+Operator[getB()]+getA(); } return result; } public String Allpart(){ String result; switch (getC()){ case 0: result = Front()+Middle(); break; case 1: result = Middle()+Front(); default: result = Front()+Middle()+End(); } return result; } public String JudgeAllpart(){ String result =Allpart(); for(int i = 0;i<result.length();i++){ if ((result.charAt(i)=='/')&&(result.charAt(i+1)=='0')){ result = Allpart(); } } return result; } } import java.util.Random; public class SetNum { Random in = new Random(); int a; int b; int c; public int getC() { setC(); return c; } public void setC() { this.c = in.nextInt(3); } String [] Operator = {"+","-","*","/"}; public int getB() { setB(); return b; } public void setB() { this.b = in.nextInt(4); } public void setA() { this.a = in.nextInt(10); } public int getA() { setA(); return a; } }
public void testCount() throws Exception { //TODO: Test goes here... String line; BufferedReader rdr = new BufferedReader(new FileReader("testdata.txt")); while ((line = rdr.readLine()) != null) { if (line.startsWith("#")) { continue; } StringTokenizer st = new StringTokenizer(line); if (!st.hasMoreTokens()) { continue; } String val = st.nextToken(); String expected = val; LinkedList<String> argument_list = new LinkedList(); while (st.hasMoreTokens()) { argument_list.add(st.nextToken()); } Postfix a = new Postfix(); a.transferToPostfix(argument_list); assertEquals(expected, a.transferToPostfix(argument_list));; } }