簡體   English   中英

如何在Java中將對象屬性值分配給變量?

[英]How to assign an object property value to a variable in Java?

以下代碼是我遇到的問題理解:

public class Rectangle {

    public Rectangle() {
        double width = 1;
        double height = 1;
    }

    public Rectangle(double w, double h) {
        double width = w;
        double height = h;
    }

    public double getArea(double w, double h) {
        return (w*h);
    }

    public double getPerimeter(double w, double h) {
        return ((2*w)+(2*h));
    }

    public static void main(String[] args) {
        Rectangle oldRectangle = new Rectangle(4, 40);
        Rectangle newRectangle = new Rectangle(3.5, 35.9);
        double height1 = oldRectangle.height;
        double height2 = newRectangle.height;
        double width1 = oldRectangle.width;
        double width2 = newRectangle.width;

        System.out.println("Width of Rectangle 1 is: " + 4);
        System.out.println("Height of Rectangle 1 is: " + 40);
        System.out.println("Area of Rectangle 1 is: " + oldRectangle.getArea(4, 40));
        System.out.println("Perimeter of Rectangle 1 is: " + oldRectangle.getPerimeter(4, 40));
        System.out.println("Width of Rectangle 1 is: " + 3.5);
        System.out.println("Height of Rectangle 1 is: " + 35.9);
        System.out.println("Area of Rectangle 1 is: " + newRectangle.getArea(3.5, 35.9));
        System.out.println("Perimeter of Rectangle 1 is: " + newRectangle.getPerimeter(3.5, 35.9));

    }

}

我被指示為Rectangle類創建兩個構造函數-一個沒有參數,但為變量width和height分配默認值1。 第二個構造函數將包含參數,該參數將以兩倍的形式被分配給其適當的變量。

然后,我被告知要創建兩個'get()'方法,它們返回各自的值-在我的例子中,它們是所述矩形的周長和面積。

然后,我被要求創建兩個Rectangle實例,一個Rectangle實例的寬度為4,高度為40,另一個實例的寬度為4.5,高度為35.9。 因此,我做到了,並且制作了兩個新的Rectangle對象,如您所見。

最后,我被指示打印兩個矩形對象的寬度,高度,周長和面積。 我的問題是我不知道引用它們的方法。 我上了JavaScript的初學者教程課程,如果我沒記錯的話,我記得有一種方法可以通過將對象的屬性值分配給變量來進行引用。 同樣,我說的是“如果我沒記錯的話”,所以我可能是錯的。 有一陣子了...

我確實意識到Java和Java Script本身是完全不同的東西。 Java Script是一種基於Java開發的腳本語言。

無論如何,任何幫助都是巨大的。

請隨時幫助我了解如何通過示例來實現我要嘗試的操作。 您沒有使用我的確切代碼,但是我希望能夠使我的代碼更有意義。.我正在使用Eclipse btw。

您走在正確的軌道上。 您想要做的是這樣的:

public double getArea(Rectangle r){
      return r.width*r.height;
}
public double getPerimeter(Rectangle r){
      return (2*r.width + 2*r.height);
}

對於打印語句,您可以對不需要的值進行硬編碼。

 System.out.println("Width of Rectangle 1 is: " + oldRectangle.width);
    System.out.println("Height of Rectangle 1 is: " + oldRectangle.height);
    System.out.println("Area of Rectangle 1 is: " + getArea(oldRectangle));
    System.out.println("Perimeter of Rectangle 1 is: " + getPerimeter(oldRectangle));

我的問題是我不知道引用它們的方法

由於Java是一種強類型語言,因此要存儲對每個Rectangle(或任何對象)屬性的引用,必須創建與該字段匹配的變量。

首先,您需要矩形具有屬性:

public class Rectangle {
    public double width;
    public dobule height;

    // constructors here...

之后,計算面積和周長的方法:

public double getArea() {
    return (width*height);
}

public double getPerimeter() {
    return ((2*width)+(2*height));
}

現在,引用它們(我想您仍然是指面積和周長):

double area1 = getArea(newRectangle);
double area2 = getArea(oldRectangle);

double perimeter1 = getPerimeter(newRectangle);
double perimeter2 = getPerimeter(oldRectangle);

您的類中沒有width和height屬性,它們僅在構造函數中定義,在類中聲明而不在構造函數中聲明,因此您可以像這樣訪問它們:

public class Rectangle {

    double width;
    double height;

  public Rectangle() {
      width = 1;
      height = 1;
  }

public Rectangle(double w, double h) {
    width = w;
    height = h;
}

public double getArea(double w, double h) {
    return (w*h);
}

public double getPerimeter(double w, double h) {
    return ((2*w)+(2*h));
}
//....
}

注意:最好將它們聲明為private並使用getter和setter進行訪問,請查看Adding Setter和Getter Methods了解更多信息。

編輯:

在您的情況下,您不需要將參數傳遞給您的方法(因為計算需要此矩形的寬度和高度),只需使用您的類字段進行計算即可,如下所示:

public double getArea() {
    return (width*height);
}

public double getPerimeter() {
    return ((2*width)+(2*height));
}

這是您需要訪問變量的步驟:

public static void main(String[] args) {
    Rectangle oldRectangle = new Rectangle(4, 40);
    Rectangle newRectangle = new Rectangle(3.5, 35.9);

    //In the following you access all the object variables and methods

    System.out.println("Width of Rectangle 1 is: " + oldRectangle.width);
    System.out.println("Height of Rectangle 1 is: " + oldRectangle.height);
    System.out.println("Area of Rectangle 1 is: " + oldRectangle.getArea());
    System.out.println("Perimeter of Rectangle 1 is: " + oldRectangle.getPerimeter());
    System.out.println("Width of Rectangle 1 is: " + newRectangle.width);
    System.out.println("Height of Rectangle 1 is: " + newRectangle.height);
    System.out.println("Area of Rectangle 1 is: " + newRectangle.getArea());
    System.out.println("Perimeter of Rectangle 1 is: " + newRectangle.getPerimeter());

}

您可以在此處測試DEMO

並回答有關使用構造函數的問題,請按如下所示調用參數化的構造函數:

Rectangle oldRectangle = new Rectangle(4, 40);

等效於:

// create the object
Rectangle oldRectangle = new Rectangle(); 
//And then assigning the values 4 and 40 to its width and height    
oldRectangle.width=4; 
oldRectangle.height=40;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM