2014-07-06 57 views
0

我需要用客戶的高度和寬度寫一個等腰三角形。使用java畫一個三角形

triangle(5,10);畫好。 三角形(10,10);畫好。 三角形(10,5);畫好。但與三角形(6,10)我有一個問題。我怎樣才能避免這個問題?你有什麼建議?

問題是並非所有必要的點都畫出來。

我的代碼如下。

public class triangle1 { 
    static int num1 =0; 
    public static void triangle(int height, int width) { 

     /* double num = new BigDecimal((double)width/2/height).setScale(1, RoundingMode.DOWN).doubleValue();*/ 
     double num = (double) width/2/height; 
     // System.out.print(num); 
     triangle(height, width, 0,0.0, num); 
    } 

    private static void triangle(int height, int width, int s, double amountfordivide, double num) { 

     System.out.println(s+" "+ amountfordivide+ " " + num+" "+ (++num1)); 
     if (s++ <= height) { 
      triangle(height, width, s, amountfordivide+num, num); 
      // System.out.println(); 
     /*System.out.println(n +" "+ m);*/ 
      if (s-1 == 0) { 
       for (double i = 0.0; i <= width; i = i + num) { 
        System.out.print("."); 
       } 
       System.out.println(); 
      } else { 
       for (double i = 0.0; i <= width; i = i+num) { 
        if (i == amountfordivide) System.out.print("."); 
        else if (i == (width - amountfordivide)) System.out.print("."); 
        else 
         System.out.print(" "); 
       } 
       System.out.println(); 
      } 
     } 
    } 

    public static void main(String[] args) { 
     triangle(10, 5); 
    } 

} 
+0

但你沒有解釋你有什麼問題 –

+0

你有什麼問題?頂點不工作或什麼? –

+0

問題是,並非所有必要的點都是 – Mikhail

回答

3

不要認爲添加雙打會達到一些確切的價值。因此,

for (double i = 0.0; i <= width; i = i+num) { 

必須寫

for (double i = 0.0; i <= width + num/2.0; i = i+num) { 

但你有你比較雙打使用==

if (i == amountfordivide) System.out.print("."); 
else if (i == (width - amountfordivide)) System.out.print("."); 

你可能會使用類似的「包圍相比,

問題
if(amountfordivide - num/2.0 < i && i < amountfordivide + num/2.0) 

對於其他條件也是如此。

但最好是更改calculaton,以便使用int循環計數器和「熱」值(amountfordivide)執行循環。

+0

是的好主意,只使用int而不用任何double。我只需要增加規模。所有的天才想法都很簡單。 – Mikhail

+0

這是標準做法。即使您確實需要double值,也要避免添加,例如,在計算數值積分的橫座標值時,使用x = a + i * h而不是x = a,並重復x + = h。 – laune