创建自定义类! Java的

时间:2016-04-01 21:31:09

标签: java class tostring setvalue

我是Java的新手,正在完成一项任务。我应该创建我自己的类“Cylinder”并从中调用方法,以便能够打印出半径和高度,然后更改它并再次打印出来。我得到它来打印cylinder1的设定值和cylinder1.setRadius / setHeight..my问题是我必须打印像Cylinder Radius:和Height:...但是当它打印所有我得到的是3.04.0或者它设置的任何......我花了很长时间试图解决这个问题,欢迎任何帮助!

public class Funtimes{

  public static void main(String[] args){
    Cylinder cylinder1= new Cylinder(1,2);
    System.out.println(cylinder1);

    cylinder1.setRadius(3);
    cylinder1.setHeight(4);
    System.out.println(cylinder1);
  }}

class Cylinder
{
  private double radius, height, area, volume;

  public Cylinder(double height, double radius){
    this.radius = radius;
    this.height=height;
  }

  public double getRadius() {
    return radius;
  }

  public double getHeight() {
    return height;
  }

  public double getArea() {
    double area = (2 * Math.PI * radius * height) + (2 * Math.PI * Math.pow(radius, 2));
    return area;
  }

  public void setRadius(double r) {
    radius = r;
  }

  public void setHeight(double h) {
    height = h;
  }

  public double calcVolume() {
    double volume = Math.PI * Math.pow(radius, 2) * height;
    return volume;
  }

  public String toString (){
    StringBuilder StBuild = new StringBuilder();
    StBuild.append(radius).append(height);
    return StBuild.toString();        
  }

  public static void main(String[] args) {
    Cylinder cylinder1 = new Cylinder(5, 5);
    System.out.println(cylinder1);
  }

}

6 个答案:

答案 0 :(得分:5)

修改您的toString()

public String toString () {
    return String.format("Radius: %s Height: %s", radius, height);       
}

答案 1 :(得分:2)

使用StBuild.append("Radius:").append(radius).append("Height:").append(height)

答案 2 :(得分:1)

您可以将toString方法更改为此类

   public String toString(){
      return "Cylinder Radius" + this.radius + " Height" + this.height;
   }

在您的情况下,您将半径和高度值一起添加到字符串中,这就是您获得响应的原因。

答案 3 :(得分:1)

StBuild.append("Radius: ").append(radius);
StBuild.append("Height: ").append(height);

答案 4 :(得分:1)

您可以使用String.format(String, Object...)生成格式化的String,其中一行 1 ,如

@Override
public String toString() {
    return String.format("Cylinder Radius: %.2f Height: %0.2f", radius, height);
}

你可以用你的StringBuilder方法做一些类似的事情(但它有点难以阅读,IMO所以我不会让它成为一个单行)。像,

@Override
public String toString() {
    StringBuilder StBuild = new StringBuilder();
    StBuild.append("Cylinder Radius: ").append(radius)
            .append(" Height: ").append(height);
    return StBuild.toString();
}

1 我建议您始终使用Override注释,当您的方法旨在覆盖超类中的某些内容时,它可以为您节省数小时的挫折感(但不是)

答案 5 :(得分:0)

编辑你的toString方法,如下所示:

public String toString (){
    StringBuilder stBuild = new StringBuilder();
    stBuild.append("Cylinder Radius:");
    stBuild.append(radius);
    stBuild.append(" and Height:");
    stBuild.append(height);
    return StBuild.toString();        
}