2015-02-24 70 views
0

嗨,每一個,所以我想寫一個代碼,當我運行它會畫一個SierpinskiTriangle。該程序必須有一個for循環,我已經有,但當我試圖讓程序complile時,我有一個問題。它說雙不能轉換爲Point2D任何人都可以幫助我嗎?嘗試代碼一個小程序,畫一個帶有for循環的SierpinskiTriangle

import javax.swing.*; 
import java.awt.*; 
import java.awt.geom.Line2D; 

public class ST extends JFrame { 

    int N = 50000; 
    double sqrt3 = Math.sqrt(3); 
    double x = 0.0, y = 0.0; 

public static void main(String args[]) { 
    ST t = new ST(); 
    t.add(new JComponent() { 
     public void paintComponent(Graphics g) { 
      Graphics2D g2d = (Graphics2D) g; 
      g2d.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); 
      for (int i = 0; i < N; i++) { 
       double r = Math.random(); 
       double x0, y0; 

       if (r < 1./3.) { 
        x0 = 0.0; y0 = 0.0; 
       } else if (r < 2./3.) { 
        x0 = 0.0; y0 = 2.0 ; 
       } else { 
        x0 = sqrt3; y0 = 1.0; 
       } 
       double x = (x0 + x)/2; 
       double y = (y0 + y)/2; 

       Shape l = new Line2D.Double(x,y); 
       g2d.draw(l); 

      } 
     } 
    }); 

    t.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    t.setSize(220, 300); 
    t.setVisible(true); 
} 
} 
+0

請詳細說明。哪條線發生錯誤? – fjf2002 2015-02-24 21:22:12

+0

好的我在20號線,31號線和36號線有錯誤 – user3718833 2015-02-24 21:46:37

回答

0

截至http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Line2D.Double.html Java API的講述,類Line2D.Double有兩個構造函數:

Line2D.Double(double x1, double y1, double x2, double y2) 

Line2D.Double(Point2D p1, Point2D p2) 

,因爲你指定的兩個參數,Java編譯器假定後者。

+0

嗯,好的..有另一種方法來解決這個問題嗎? – user3718833 2015-02-24 22:40:49

+0

你似乎沒有看到這一點。你有沒有讀過API文檔?我希望你同意一條線需要一個起點和一個終點。因此,請指定開始點和結束點的x和y座標 - 分別通過傳遞4個數字或傳遞由兩個數字組成的兩個點對象。 – fjf2002 2015-02-24 22:44:36