簡體   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