使用toString方法打印出调整后的变量

时间:2016-04-08 17:31:42

标签: java tostring

我在这里有一个非常基础的课程,我试图使用我的第一个toString()方法。

 public class Shoes
{
   private String style;
   private String color;
   private double size;

   public Shoes()
   {
      this.style = " ";
      this.color = " ";
      this.size = 0;


   }

   public Shoes(String newStyle, String newColor, double newSize)
   {
      this.style = newStyle;
      this.color = newColor;
      this.size = newSize;

      System.out.println(this);

   }

   public String getStyle()
   {
      return style;
   }

   public void setStyle(String newStyle)
   {
      style = newStyle;
   }

   public String getColor()
   {
      return color;
   }

   public void setColor(String newColor)
   {

      color = newColor;
   }

   public double getSize()
   {
      return size;
   }

   public void setSize(double newSize)
   {
      size = newSize;
   }



   public String toString()
   {
      String myEol = System.getProperty("line.separator");
      return new String("Style: " + style + myEol + "Color: " + color + myEol + "Size: " + size);



   }


}

我试图让它在我的主类中它将在变化时打印出变量数据。现在我只知道如何在重载的构造函数中调用它,但是如何在数据从其初始化值更改后打印它?

主类的示例,如您所见,我使用默认值并重载。

public class ShoeStore
{
   public static void main(String[] args)
   {


      Shoes nerdShoes = new Shoes();
      Shoes coolShoes = new Shoes("Sandals", "Brown", 8.5);

      nerdShoes.setColor("Tan");
      nerdShoes.setStyle("Walking");
      nerdShoes.setSize(9.5);

      System.out.println("The style of nerdShoes: " + nerdShoes.getStyle());

      coolShoes.setColor("Purple");

      System.out.println("The style of coolShoes: " + coolShoes.getStyle());



   }
}

我为修复它做了什么

public String toString()
   {
      String myEol = System.getProperty("line.separator");
      return new String("Style: " + getStyle() + myEol + "Color: " + getColor() + myEol + "Size: " + getSize());


   }

我只是调用函数而不是调用变量本身!我不知道我是怎么错过的。现在它正确打印了!

2 个答案:

答案 0 :(得分:1)

只需添加

System.out.println(this);
每个set方法中的

。例如:

public void setStyle(String newStyle)
{
   style = newStyle;
   System.out.println(this);
}

答案 1 :(得分:0)

一旦使用其中一个set方法更改变量,它应自动将其分配给您的一个成员变量(字段)。打印对象时,应自动调用toString()方法,因为它会覆盖默认的toString()。

System.out.println(nerdShoes);

这将打印出来

//toString() method
("Style: " + getStyle() + myEol + "Color: " + getColor() + myEol + "Size: " + getSize());