Java 这是打印出来的SOP。Number@566776adcan';I don’我不知道怎么做,只是把值打印出来

Java 这是打印出来的SOP。Number@566776adcan';I don’我不知道怎么做,只是把值打印出来,java,expression,Java,Expression,这应该有一个处理器、表达式、和、数和乘积类。 处理器执行表达式,表达式应执行总和和乘积,可能是偶数。我不太确定 这转到数字类表达式e1=新数字(2.0) 这很好。我知道号码了 } 问题是该行和s1=新和(e1、e2、e3);Sum有一个必须传递表达式的构造函数。在将操作数传递到double之后,我尝试了许多不同的方法,但得到的只是SOP。Number@566776ad. 我不知道下一步该做什么或尝试什么 下面是Sum类 首先,System.out.println()调用传入对象的toString

这应该有一个处理器、表达式、和、数和乘积类。 处理器执行表达式,表达式应执行总和和乘积,可能是偶数。我不太确定

这转到数字类表达式e1=新数字(2.0)

这很好。我知道号码了

}

问题是该行和s1=新和(e1、e2、e3);Sum有一个必须传递表达式的构造函数。在将操作数传递到double之后,我尝试了许多不同的方法,但得到的只是SOP。Number@566776ad. 我不知道下一步该做什么或尝试什么 下面是Sum类


首先,System.out.println()调用传入对象的toString()函数,将对象转换为字符串表示形式,因此无需事先进行转换。此外,如果这样做,则需要将其分配给变量:

String printCode = code.toString(); // redundant
System.out.println("double : " + printCode);
Double重写toString()方法(请参阅),因此将打印您的数字,而数字仅从对象类继承它(请参阅) )


您可以编写自己的类来扩展Number类,并重写toString()方法。

SOP。Number
不会重写
toString
。解决这个问题,您的问题就会消失。您是在谈论operand.toString();因为我仍然得到[LSOP.Expression;@6D06D69CS1您正在打印“Numbers”类型的对象。该类没有toString,因此它使用object.toString。实现一个toString方法或创建一个新方法,返回双精度并打印它。请注意使用双精度值进行计算,请参阅
public class TestSOP  {
public static void main(String[] args) {
    Processor proc = new Processor();
    Expression e1 = new Number(2.0);
    Expression e2 = new Number(3.1);
    Expression e3 = new Number(-5.0);
    Sum s1 = new Sum(e1, e2, e3);
    System.out.println("s1 - " + proc.execute(s1));
    Product p1 = new Product(s1, e3);
    System.out.println("s1 - " + proc.execute(s1));
    // etc.
}
public  class Sum implements Expression   { 
 public Sum(Expression ...operand ) {
SOP.Number.Numbers(operand); }
String printCode = code.toString(); // redundant
System.out.println("double : " + printCode);