gpt4 book ai didi

java - 我怎样才能让方程式以正确的顺序打印?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:02 28 4
gpt4 key购买 nike

我正在创建一个计算器,它必须计算出像 (12.0 + 10.0) * 3.0 这样的表达式。到目前为止,我已经根据每个数学运算创建了子类。

例如:

添加。 Java

class Addition extends ArithmeticExpression {
Addition(double value1, double value2) {
result = value1 + value2;
this.value1 = value1;
this.value2 = value2;
}
public Addition( ArithmeticExpression an,double num2) {
value1 = an.evaluate();
value2 = num2;
result1 = value1 + value2;
}
public double evaluate1() {
System.out.println("Arbitrary Answer Is");
return result1;
}
public double display1() {
System.out.println("Arbitrary Question Is");
System.out.println( "(" + value1 + "+" + value2 + ")" + " =" + result1);
return result1;
}
public double display() {
System.out.println("Addition Question Is");
System.out.println(value1 + " + "+ value2);
return result;
}
public double evaluate() {
System.out.println("Addition Answer Is");
System.out.println(result);
return result;
}

还有一个与乘法类似但乘法而不是加法的乘法。然后我为我正在回答的问题创建了一个类;类在下面。任意.java

   public class arbitrary {
public Arbitrary() {
Addition arbitrary1 = new Addition(12.0,10.0);
arbitrary1.display1();
Multiplication arbitrary2 = new Multiplication(arbitrary1,3.0);
arbitrary2.display2();
}

当它显示它显示的答案时:

任意问题是

(12.0+10.0) =0.0

加法答案是

22.0

任意问题是

(22.0*3.0) = 66.0

关于如何在答案旁边打印出原始问题有什么建议吗?

最佳答案

您应该在类字段中保留 ArithmeticExpressions 而不是评估值。

使“值”成为 ArithmeticExpressions 的特殊子类。

  • 注意显示现在是如何使用

    实现的
    System.out.println(expr1.display() + " + "+ expr2.display());
  • 评估使用:

    double result = expr1.evaluate() + expr2.evaluate();

更多提示:

  • 考虑不要将打印与评估逻辑混合(我假设你这样做是为了调试?)
  • 考虑使用/覆盖 Java 的 toString() 而不是 display()
  • 考虑制作一个 BinaryExpression 而不是 AdditionExpressionMultiplicationExpressionSubtractionExpressionDivisonExpression 以及您有更多运算符(%、^、~、! 等)

.

class LiteralNumberExpression : extends ArithmeticExpression
{
public double value;
LiteralNumberExpression(double v) { this.value = v; }

public double display() {
// todo
}
public double evaluate() {
// todo
return this.value;
}
}

class Addition extends ArithmeticExpression {
ArithmeticExpression expr1, expr2;

Addition(ArithmeticExpression expr1, ArithmeticExpression expr2) {
this.expr1 = expr1;
this.expr2 = expr2;
}
public string toString() {
return expr1.display() + " + "+ expr2.display();
}
public double evaluate() {
return expr1.evaluate() + expr2.evaluate();
}
}

或者,BinaryExpression 版本:

class BinaryExpression extends ArithmeticExpression {
ArithmeticExpression expr1, expr2;
char op;

BinaryExpression(char op, ArithmeticExpression expr1, ArithmeticExpression expr2) {
this.op = op;
this.expr1 = expr1;
this.expr2 = expr2;
}
public String toString() {
return "(" + expr1.display() + " " + op + " "+ expr2.display() + ")";
}
public double evaluate() {
switch (op)
{
case '+': return expr1.evaluate() + expr2.evaluate();
case '-': return expr1.evaluate() - expr2.evaluate();
case '/': return expr1.evaluate() / expr2.evaluate();
case '*': return expr1.evaluate() * expr2.evaluate();
}
throw new // todo exception
}
}

关于java - 我怎样才能让方程式以正确的顺序打印?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183923/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com