2016-05-18 28 views
-2

我一直在試圖做一個for循環,水平復制屏幕上的垂直線,每一個距離它的先例相同的距離;然而,儘管看起來在語法上是正確的,但我的代碼似乎並不奏效。我已經在下面發佈了我的代碼,希望有人能夠發現問題。For循環(s)不按預期與圖形工作

class HVLines 
{ 
    public static void Lines(Graphics g) 
    { 
    int k; 
    int x=0; 

     for (k = 1; k <= 50; k++) 
     { 
     g.drawLine(20+x,150,20+x,525); 

     for (x = 1; x <= 50; x+=20) 
      { 

      } 
     } 
    } 
} 
+2

不空內環目的是什麼?是的,你的語法是「正確的」,這意味着它編譯,但它沒有邏輯意義。如果不先編寫邏輯,關閉計算機並分別在紙上編寫代碼。 –

+1

'x'的內循環沒有代碼,所以它什麼都不做(除了浪費CPU時間)。外循環中的'drawLine()'調用將在第一次迭代中用'x = 0'繪製,並且在隨後的所有迭代中用'x = 61'繪製。也許把它移入內部循環? 'k'循環的目的是什麼?如果你已經在循環中聲明瞭這些變量,你會注意到「x」的濫用,例如'for(int x = 1; x <= 50; x + = 20)' – Andreas

+0

請改進問題:顯示您想要實現的內容的圖像,解釋您認爲每行代碼正在做什麼... A更多的細節可以幫助我們理解你想要達到的目標以及爲什麼你沒有達到目標。 –

回答

-1

它應該看起來像這樣。由於我不知道如何使用它,我無法確保它可以正常工作。此外,在您的循環中,您使用兩次x,但不要使用k。改變其中一個,或者,如果你不需要它,則擦除其中一個循環。

我確定這一個創建一個對角線,而不是水平。

for (k = 1; k <= 50; k++) { 
    for (x = 1; x <= 50; x+=20) { 
     // Choose one of the following 
     g.drawLine(20+k,150,20+x,525); 
     g.drawLine(20+x,150,20+k,525); 
    } 
} 

這一個創建一條直線:

for (x = 1; x <= 50; x+=20) { 
    g.drawLine(20+x,150,20+x,525); 
} 
+0

外層循環的目的是什麼。你怎麼能回答這樣一個不完整的不可理解的問題,知道代碼應該「看起來像什麼」? –

+0

很明顯他想用'k'和'​​x'。他忘記使用其中的一個,不要挑剔。 – UDKOX

+0

我寧願等待他澄清他的問題,以便能夠以智能的方式回答問題。發佈如上所述的無意義代碼並不能幫助他或未來的訪問者。 –

-1
import java.awt.*; 
import java.awt.event.*; 
import java.awt.geom.Line2D; 
import javax.swing.JApplet; 
import javax.swing.JFrame; 

public class DrawLine extends JApplet { 
    public void init() { 
     setBackground(Color.white); 
     setForeground(Color.white); 
    } 

    public void paint(Graphics g) { 
     Graphics2D g2 = (Graphics2D) g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
       RenderingHints.VALUE_ANTIALIAS_ON); 
     g2.setPaint(Color.gray); 
     for (int y = 0; y <= 300; y += 30) { 
      g2.draw(new Line2D.Double(0, y, 300, y)); 
     } 
    } 

    public static void main(String s[]) { 
     JFrame f = new JFrame("Line"); 
     f.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent e) { 
       System.exit(0); 
      } 
     }); 
     JApplet applet = new DrawLine(); 
     f.getContentPane().add("Center", applet); 
     applet.init(); 
     f.pack(); 
     f.setSize(new Dimension(300, 300)); 
     f.setVisible(true); 
    } 
}