Это выводит SOP. Number@566776ad не может понять, как заставить его просто распечатать значение - PullRequest
0 голосов
/ 21 февраля 2020

Предполагается, что у него есть класс Processor, Expression, Sum, Number и Product. Процессор выполняет Expression, а выражение должно выполнять Sum и Product, может быть, даже число. Я не слишком уверен в этом.

Это относится к выражению класса чисел e1 = новый номер (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 = новая сумма (e1, e2, e3); сумма имеет конструктор, который должен передать выражение. После прохождения операнда я пробовал много разных способов, чтобы получить его в двойном, но все, что я получаю, это SOP. Number@566776ad. Я не уверен, что делать или пытаться в следующем Беллоу - это Sum Sum.

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

1 Ответ

1 голос
/ 21 февраля 2020

Во-первых, 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 () метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...