2016-05-18 14 views
-2

私は、先行するものと同じ距離だけ離れて、画面全体に渡って縦線を水平に複製するforループを作成しようとしていました。しかし、私のコードは、構文的に正しいと思われるにもかかわらず動作していないようです。私は下に私のコードを掲載しました、うまくいけば誰かが問題を識別することができます。グラフィックスで意図した通りにループが動作しない

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'の誤用に気付いたでしょう。 (int x = 1; x <= 50; x + = 20) ' – Andreas

+0

質問を改善してください:あなたが達成しようとしているもののイメージを表示し、各コード行が何をしていると思いますかを説明してください。あなたが達成しようとしていることと達成していない理由を理解するのに役立ちます。 –

答えて

-1

これは次のようになります。私はあなたがそれをどのように使用するのか分からないので、私はそれが動作することを確認することはできません。また、ループではxを2回使用しますが、kは使用しないでください。それらの1つを変更するか、必要がない場合は、ループの1つを消去します。

私はこのことが水平ではなく対角線を作成することをお勧めします。

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); 
    } 
} 

この1つは、直線を作成:

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

外側ループはどのような目的を果たしますか。そのような不完全な理解できない質問に答えるにはどうしたらよいでしょうか。 –

+0

彼は 'k'と' x'を使いたがっていることは明らかです。彼はそれらの1つを使用するのを忘れていました。 – 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); 
    } 
} 
関連する問題