A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目如下:
import java.util.Random;

/* 随机四则算术表达式生成,要求加减乘除随机组合,括号随机,每个运算数随机
* 45.0 * 42.0 / 98.0 + 12.0 / 90.0 / 37.0 + (96.0 - 78.0) / 53.0 * 3.0 = 24.33225516621743
* (15.0 - 0.0 / 82.0) / (79.0 + 20.0) / 55.0 / 75.0 * 41.0 + 89.0 - 8.0 = 85.55555555555556
* (11.0 - 50.0) * 92.0 * (35.0 + 29.0) * (49.0 + 65.0) * 57.0 / 88.0 / 78.0 = -217387.63636363635
*/

class ArithmeticExpression {
private double  value = 0.0; // 表达式的结果
private char operation = '\0'; // 运算符
private int operPriority = 10; // 优先级
private ArithmeticExpression leftExp = null; // 左运算表达式
private ArithmeticExpression rightExp = null; // 右运算表达式
private ArithmeticExpression fatherExp = null; // 父级表达式

ArithmeticExpression(ArithmeticExpression father) {
fatherExp = father;
}

int OperPriority() {
return operPriority;
}

public double Value() {
if (operation == '\0') {
return value;
}
else {
switch (operation) {
case '+':
value = leftExp.Value() + rightExp.Value();
break;
case '-':
value = leftExp.Value() - rightExp.Value();
break;
case '*':
value = leftExp.Value() * rightExp.Value();
break;
case '/':
value = leftExp.Value() / rightExp.Value();
break;
}

return value;
}
}

// 50分 生成表达式框架,参数 numOfElements 是传入的运算数个数
// 例如numOfElements = 5 则生成的表达式可能为 XXX * (XXX + XXX) / (XXX - XXX)
public boolean CreateFrame(int numOfElements) {

return true;
}

// 30分 在生成好的表达式框架中用随机数(-99 ~ +99整数即可)填充各个运算数
// 要求:如果表达式运算符是除号,右侧结果必须大于1
// 例如numOfElements = 5 则生成的表达式可能为 30 * (20 + 10) / (10 - 5)
public boolean FillElements() {

return true;
}

// 30分 表达式输出如果左右表达式的运算优先级低于父表达式要加括号
// 如果该表达式只是一个负运算数,也要加括号
public void Display()
{

}

}

public class ArithmeticExpressionCreator {

public static void main(String args[])
{
ArithmeticExpression ae = new ArithmeticExpression(null);
for (int i = 0; i < 5; i++) {
ae.CreateFrame(10);
ae.FillElements();
ae.Display();
System.out.println(" = " + ae.Value());
}

return;
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马