2012-03-28 94 views
-3

當天的問題#3。我必須設計一個程序,可以從用戶讀取特定的半徑,然後顯示相關圓圈的A/D/C。我已經寫下了我需要這樣做的構造函數,但是我似乎對我應該用它做什麼感到困惑。在Java中使用構造函數

我該如何把我在構造函數中得到的東西用在main中?

相關構造函數代碼:

public class GetCircle { 
private float radius; 
private double diameter,circumference,area; 

public GetCircle(float getRadius, double setDiameter, double setCircumference, double setArea){ 
    radius=getRadius; 
    diameter=setDiameter; 
    circumference=setCircumference;  
    area=setArea; 
} 
public void setRadius(float getRadius){ 
    radius=getRadius; 
} 
public float getRadius(){ 
    return radius; 
} 
public void setDiameter(double setDiameter){ 
    diameter=setDiameter; 
} 
public double setDiameter(){ 
    return diameter; 
} 
public void setCircumference(double setCircumference){ 
    circumference=setCircumference; 
}  
public double setCircumference(){ 
    return circumference; 
} 
public void setArea(double setArea){ 
    area=setArea; 
} 
public double setArea(){ 
    return area; 
} 
public void answer(){ 
    System.out.println("The Radius that you specified was: " + getRadius()); 
    System.out.println("The Diameter of your circle is: " + setDiameter()); 
    System.out.println("The Circumference of your circle is: " + setCircumference()); 
    System.out.println("The Area of your circle is: " + setArea()); 
    } 

}

相關Main方法:

import java.util.Scanner; 
public class Circle { 

public static void main (String[] args){ 
    double PI = 3.14159; 
    Scanner input = new Scanner(System.in); 
    System.out.println("Hello, for this exercise we require that you input the Radius of the circle of your choosing: "); 


} 

} 

我真的有兩個問題,我想: 1)如何我採取什麼我從我的構造函數類中獲得並將其引入到我的主要方法中。 2)最好的地方是定義圈子的「數學」(IE2πr等)。

謝謝!

+6

我恨聽起來輕率,但是,如果你在一天內有關於Java三個問題......你不覺得你應該檢討你的課本一點點多一點? – Max 2012-03-28 00:45:13

+2

如果你被允許的話,你可以使用'Math.PI'而不是定義你自己的pi常量。 – Jeffrey 2012-03-28 00:46:14

+0

......並記住,22/7對羅馬人來說已經足夠了。 ;-) – 2012-03-28 00:48:42

回答

0
  1. 您希望通過使用Scanner類捕獲輸入。你會想要對他們是否輸入一個單詞而不是一個整數進行完整性檢查,但是Scanner是一個很好的開始。

  2. 對象的任何和所有相關操作都應該屬於對象內部。在你的情況下,由於圓周與圓相關,因此在Circle內創建方法如public double getCircumference()會更好。

+0

謝謝Makoto - 我一定知道我需要使用掃描儀進行輸入,但我會嘗試將大部分方法移至Circle以便更容易。 Regards, – Numpty 2012-03-28 01:22:13

0

有一個類的全部意義在於在你的類中設置這些變量。在僞代碼,你想要做的是:

Main: Instantiate a new circle (which calls its constructor class) 
     Circle: Set the internal (private and public) class variables of the circle 
     Circle: Now has private variables set with the values you need to get into Main 
    Main: Call a method on the Circle that does the Math you want 
    (Alt. Use your getter classes you made like circle.getRadius in the main method to use these like 'variables') 

對於數學,你可以把它放在圈子裏面,在你的主類,或在一個新的類。這需要一點點弄清楚,並取決於你自己的特定對象orientedey的願望

+0

將它放在另一個類中是沒有意義的。關於一個類的信息,包括派生信息(例如區域,周長等)在課堂上比其他地方更有意義。這是面向對象設計的基本理論。 – Makoto 2012-03-28 00:48:37

+0

這取決於,如果Circle是一個數據對象,他可能需要一個特定的'Math'類來處理它。雖然你是對的,但他可能應該把它放在getCircle裏面。命名約定在這裏稍微拋出了我。 – DaOgre 2012-03-28 00:54:12

0

我認爲你應該重新檢查你的圈子類。一個圓有一個屬性。這通常是半徑或直徑。

我更喜歡只有空的構造函數。因人而異。我會用setter來定義半徑。

那麼你可以做一個圓圈?添加的方法對於每個動作:

getDiameter() 
getArea() 
getCircumference() 
getRadius() 
+0

我必須問 - 如果像Max這樣的人(顯然其他人是我的可愛分數)與試圖學習的人有問題,任何人都可以建議一個沒有精英主義/敵對心態的網站,我會更好地服務?謝謝你們所有的幫助,但......來吧。這個地方的概念實際上是提問... – Numpty 2012-03-28 01:19:37

+0

@numpty我不打算侮辱這個答案。我的做法是退一步,重新審視更多有關課程的基本概念。在這種情況下,你看到我命名爲「Circle」類。這是因爲名詞成爲很好的名字。你的「GetCircle」是口頭的。然後,一旦我們有一個圈子,你可以用圓圈做什麼?這些暗示着方法。 – 2012-03-28 01:27:30

+0

嗨託尼 - 你可能是對的 - 我需要進一步調查底層的概念。我對這裏的普遍敵意有點吃驚。在UL/SF中,我們顯得更加小巧友好(並不是說你特別不是,只是一般的社區)...... – Numpty 2012-03-28 01:36:34