簡體   English   中英

這會打印出 SOP.Number@566776ad 無法弄清楚如何讓它只打印出值

[英]This prints out SOP.Number@566776ad can't figure out how to make it just print out the value

這應該有一個 Processor、Expression、Sum、Number 和 Product 類。 處理器執行表達式和表達式應該執行 Sum 和 Product 可能是偶數。 我不太確定。

這轉到 Number 類表達式 e1 = new Number(2.0);

        public Number(double operand) {
        Double code = new Double(operand);
           code.toString();
            System.out.println("double : " + code);
           return;

這通過得很好。 我得到了號碼

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.
}

}

問題是這一行 Sum s1 = new Sum(e1, e2, e3); Sum 有一個必須傳遞表達式的構造函數。 在將操作數傳遞給雙精度數后,我嘗試了許多不同的方法,但我得到的只是 SOP.Number@566776ad。 我不知道接下來該做什么或嘗試什么 貝婁是 Sum 類。

public  class Sum implements Expression   { 
 public Sum(Expression ...operand ) {
SOP.Number.Numbers(operand); }

首先,System.out.println() 調用傳入對象的toString() 函數將對象轉換為字符串表示,因此您無需事先將其轉換。 此外,如果你這樣做,你需要將它分配給一個變量:

String printCode = code.toString(); // redundant
System.out.println("double : " + printCode);

雙重覆蓋 toString() 方法(參見https://docs.oracle.com/javase/8/docs/api/?java/lang/Double.html ),因此您的號碼被打印出來,而 Number 僅從 Object 類繼承它(參見https://docs.oracle.com/javase/8/docs/api/java/lang/Number.html )。

您可以編寫自己的類來擴展 Number 類,並覆蓋 toString() 方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM