[英]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方法。
我無法弄清楚如何糾正以下錯誤:
對於以下對象,未定義構造函數Cylinder()
-Cylinder cylinder1 = new Cylinder();
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)
。 但是,您正在嘗試使圓柱體為int
和String
。
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
。
get
和set
方法的示例:
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.