创建一个圆柱类

时间:2015-07-20 10:55:32

标签: java

我目前正在进行Java课程(我的单身汉最后一个课程,yay),而且我很难在下面尝试理解课程并解决这个问题。我目前正在使用的教科书非常令人困惑,我尝试使用其他在线资源来弄清楚我做错了什么,但我似乎仍然坚持下面的问题。每当我尝试运行程序时,我得到的所有答案都是0.00.0,这是因为我自己错误地将值分配给cylinder1?另外,对于toString()课,我怎么做呢?无论我能做什么,我都会在将double转换为String时遇到错误。

任何帮助都会受到赞赏。

感谢。

提示

  

实现下面的UML中显示的名为Cylinder的类。构造函数接受并初始化Cylinder的半径和高度,而访问器和变换器允许在构造对象后更改它们。该类还包括计算和返回Cylinder的体积和表面积的方法。最后,它包含一个toString方法,该方法返回形状的名称,半径和高度。创建一个main方法,该方法实例化4个Cylinder个对象(任何参数),用toString()显示它们,在每个参数中更改一个参数(您的选择),然后再次显示它们。 [15分]

UML

uml

代码

import java.util.*;
import java.text.*;
import java.io.*;
import java.lang.*;

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

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

    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);
    }
}

3 个答案:

答案 0 :(得分:3)

由于这显然是家庭作业我不会给你答案,但我会尝试解释一些事情。

此:

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

是一个构造函数。当您创建一个对象(和一个类的实例)时,您可以调用它。你可以这样称呼它:

Cylinder cylinder1 = new Cylinder(5, 5);

但你班上会发生什么?当你调用构造函数时,你真的保存了你想要的值吗?

至于toString方法,你可以为double(height.toString)调用toString,或者你可以做我总是做的事情,只是通过添加一个字符串作弊。

public String toString (){
return "Cylinder [ h: " + height + " - r: " + radius + " - v: " + calcValume() + "]";
}

答案 1 :(得分:1)

Cylinder中的

将构造函数更改为:

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

在void main()中:

Cylinder cylinder1 = new Cylinder(5, 5);
System.out.println(cylinder1.calcVolume());

这样可行。

但你应该将main方法转移到其他类。

答案 2 :(得分:1)

在构造函数中,您将radius和height设置为0.0。尝试:

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