2010-08-22 124 views
3

因此,我正在學習Java,希望能夠幫助我完善/增強一個計算三角形面積的小應用程序。學習/修正Java

import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 

     Scanner in = new Scanner(System.in); 

     System.out.println("What's the base?"); 
      int base = in.nextInt(); 
      System.out.println(); 

     System.out.println("What's the height?"); 
      int height = in.nextInt(); 
      System.out.println(); 

      int area = base * height/2; 

     System.out.println("The area of the triangle is: " +area+ "."); 

    } 

} 

請注意,我是全新編程Java或任何語言的用戶。如果你不介意,你能否詳盡解釋我如何完善這個/使之更簡單?

非常感謝!

+1

第1步:閱讀[代碼約定](http://www.oracle.com/technetwork/java/codeconvtoc-136057.html)。您的縮進已關閉,「+」運算符未完全被空格包圍。 – BalusC 2010-08-22 05:35:51

+0

我會在你的「區域」方程中加上括號,只是爲了清楚你的意圖是什麼。您也可以修改它以允許使用十進制數字。 – 2010-08-22 05:45:15

+0

第2步:考慮類型,在'int area = base * height/2;'如果'base = 5'和'height = 7'怎麼辦 – 2010-08-22 05:45:51

回答

1

area不應該是int類型。做它double
編輯:

double area = base * height/2.0; 

你能趕上當用戶沒有輸入正確的值拋出異常,再次問他(使用循環)。

如果結果有太多的小數,格式化:

System.out.println("The area of the triangle is: " +new DecimalFormat("0.000").format(area)); 
+0

如果您不更改/將其中一個操作數加倍,則沒有區別。 – 2010-08-22 05:47:26

+0

感謝您的回覆! 我已經通過他們,並盡我所能編輯我的代碼。我改爲浮動並添加了十進制格式。我如何得到它,所以如果是的話......例如,當使用+新的DecimalFormat(「0.000」)格式(區域)時,它不會以「7.000」出現。 我怎麼會這樣,以便在每次計算後它會重新啓動程序? – Matthew 2010-08-22 20:33:54

+0

如果您不想顯示0位數字,請使用'0。###''之類的格式。 – 2010-08-23 19:29:27

2

沒有大量出現,以簡化和完善。關於唯一我要修改的是計算面積的線。也許使用float來避免四捨五入爲int。

float area = (float)(base * height)/2; 

對於這個問題,你可以改變輸入到彩車,以及:

float base = in.nextFloat(); 
... 
float height = in.nextFloat(); 

,然後更改計算行改爲:

float area = base * height/2; 

,因爲現在你沒有投入投入。

float會給你single-precision浮點數。如果你想瘋狂的精度,使用double

+1

'雙'不是「瘋狂」的精確;它應該是你默認的正常精度。在大多數情況下,你應該更喜歡'double'來'浮動'。 – polygenelubricants 2010-08-22 18:01:08

+0

您可能通常是正確的,但有兩個浮動類型的原因。他們每個人都在準確性,存儲大小和速度方面進行權衡。這些東西需要考慮每種用法。您應該始終知道您的應用程序需要什麼程度的準確度,但是如果您關心的是存儲和性能,請對其進行衡量。 – 2010-08-22 18:26:59

+0

我想我應該補充說,大部分Java數學函數返回雙打,所以如果你使用了很多這些,雙打將是一個自然的選擇。 – 2010-08-22 18:34:10

2

將其分解爲對象。
你的例子顯示了正確的語法用法,但是你還沒有演示對象的知識。
考慮寫一個Triangle類,並將區域計算作爲成員函數實現。
下一步您可以探索polymorphism
通過將面積計算提取到一個稱爲形狀的通用接口來重構三角形類。
實現Shape的所有類必須提供計算面積的接口規定的方法。
編寫一個名爲Square的新類,實現接口Shape。

1

你可以通過有Shape類和Triangle子類使它更多OO。計算面積可以利用Strategy pattern。希望這可以幫助。