繁体   English   中英

如何在Java中使用类和方法

[英]How to use classes and methods in Java

我对Java和编码还很陌生,但是到Java材料为止,我还没有遇到任何问题。 我真正无法确定的是类和方法的实际工作方式。 在过去的几个小时中,我一直在尝试实施此方法,但无济于事:

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

UML:

在此处输入图片说明

这是我目前拥有的代码:

class Cylinder {
    private double radius;
    private double height; 


    // Method #1
    private void rad (){

    }

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


    // Method #2 for calculating volume.
    double calcVolume (){
        double volume = Math.PI * Math.pow(radius, 2) * height; 
        return volume; 
    }

    // Method #3 for calculating surface area.
    double calcArea (){
        double area = (2 * Math.PI * radius * height) + (2 * Math.PI * Math.pow(radius, 2));
        return area;
    }

    // toString method.
    public String toString (){
        StringBuilder sb = new Stringbuilder();
        sb.append(radius).append(height);
        return sb.toString();

    }
}

公共课Murray_A03Q1 {

public static void main(String[] args) {

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

    Cylinder cylinder2 = new Cylinder(6, "cup");

    Cylinder cylinder3 = new Cylinder(7, "jar");

    Cylinder cylinder4 = new Cylinder(8, "paper roll");
}       

}

我真正不了解的是如何使用“ get”和“ set”方法。 另外,我不确定如何实现toString方法。

我无法弄清楚如何纠正以下错误:

  1. 对于以下对象,未定义构造函数Cylinder() -Cylinder cylinder1 = new Cylinder();

  2. Stringbuilder无法解析为sb = new Stringbuilder();的类型sb = new Stringbuilder();

谢谢您的帮助!

我真正不了解的是如何使用“ get”和“ set”方法。

获取器和设置器的目的是用于封装。 它们允许您获取或设置类变量的值,而不必将其声明为公共变量。

例如,如果您要

public double radius;
public double height;

您将能够以以下身份访问它们

cylinder1.radius = 1;
cylinder2.height = 10;
int a = cylinder3.radius;
int b = cylinder3.height + cylinder4.radius;

等等

现在如果相反

private double radius;
private double height;

上面的代码将失败。 这就是为什么我们需要吸气剂和吸气剂。 顾名思义,getter“获取”变量。

public double getHeight() {
    return height;
}

当设置员“设置”变量时。

public void setHeight(double height) {
    this.height = height;
}

至于为什么我们要这样做, 有很多信息。

另外,我不确定如何实现toString方法。

至于如何实现toString()方法,它要做的就是返回String 但是对于String包含的内容,没有硬性规定。 一个好的开始就是像您一样返回半径和高度。

对于以下对象,未定义构造函数Cylinder()-Cylinder cylinder1 = new Cylinder();

您的构造函数是public Cylinder (double radius, double height) 但是,您正在尝试使圆柱体为intString

Cylinder cylinder1 = new Cylinder(5, "can");

要么

  • 将构造函数更改为public Cylinder(double radius, String name); 要么
  • 用两个双精度半径和高度实例化圆柱体。 例如

     Cylinder cylinder1 = new Cylinder(1.0, 2.0); 

Stringbuilder无法解析为-StringBuilder sb = new Stringbuilder();的类型。

唯一的问题是您忘记了b大写。 它是StringBuilder而不是Stringbuilder

getset方法的示例:

 double getRadius() {
    return radius;
 }

 void setRadius(r) {
    radius = r;
 }

对于以下对象,未定义构造函数Cylinder()-Cylinder cylinder1 = new Cylinder();

正在尝试调用默认构造函数(无参数的构造函数)。 您可以确切地找到此错误的调​​用位置,或者添加默认的构造函数:

Cylinder() {
    this.radius = 0;
    this.height = 0;
}

Stringbuilder无法解析为-StringBuilder sb = new Stringbuilder();的类型。

StringBuilder实际上是java.lang.StringBuilder类。 将此文本放在文件顶部以帮助其解析名称。

import java.lang.StringBuilder;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM