почему я не могу печатать, используя 'tostring'?Как я могу напечатать Arry, который включает в себя классы? - PullRequest
0 голосов
/ 04 мая 2019

public String toString () {// это в другом классе

    String Cubes = "+";

    for(int i = 0; i < CubesStack.length;) {
        Cubes = Cubes + CubesStack[i].toString();
    }

    return "maxCubes = " + this.maxCubes + "\n" +

            "currentCubes = " + this.currentCubes + "\n" + 

            "CubesStack = " + Cubes; 

}

открытый класс MainMain {// это главный

public static void main(String[] args) {
    // TODO Auto-generated method stub
    cubesTower tower1 = new cubesTower(20);
    System.out.println(tower1.toString());
}

}

почему я не могу печатать, используя 'tostring'? Как я могу напечатать Arry, который включает в себя классы? большое спасибо вам .

1 Ответ

1 голос
/ 04 мая 2019

Ваш объект должен реализовать метод toString () , иначе будет реализована реализация toString () по умолчанию из java.lang.Object .

java.lang. Реализация объекта по умолчанию:

public String toString() {
   return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

Таким образом, вы должны переопределить toString (), чтобы получить свои собственные значения

Например: Здесь у меня есть Имя класс, который будет иметь два свойства

class Name {
    private String firstName;
    private String lastName;
    public Name(String firstName, String lastName) {
        super();
        this.firstName = firstName;
        this.lastName = lastName;
    }
    @Override
    public String toString() {
        return "Name [firstName=" + firstName + ", lastName=" + lastName + "]";
    }

}
public static void main(String[] args) {
    Name[] names = new Name[]{new Name("john","doe"),new Name("john1","doe1")};
    System.out.println(names[0]);
}

Если я не переопределить toString (), тогда output : com.stackovflow.problems.Name@33909752

После реализации toString () output : Имя [firstName = john, lastName = doe]

...