2016-05-18 27 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); 
    } 
}