Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
而循环只循环一次-java_Java_Loops_While Loop - Fatal编程技术网

而循环只循环一次-java

而循环只循环一次-java,java,loops,while-loop,Java,Loops,While Loop,为什么我的while循环只循环一次?它应该循环99次。Thread.sleep方法能否打破此循环或重新绘制?你能帮我解决这个问题吗?它没有显示任何错误。我正在使用netbeans Licznik.java: import javax.swing.JApplet; public class Licznik extends JApplet { @Override public void init() { setSize(900,900); P

为什么我的while循环只循环一次?它应该循环99次。Thread.sleep方法能否打破此循环或重新绘制?你能帮我解决这个问题吗?它没有显示任何错误。我正在使用netbeans

Licznik.java:

    import javax.swing.JApplet;

public class Licznik extends JApplet {
    @Override
    public void init() {
        setSize(900,900);
        PanelLicznik pl=new PanelLicznik();
    add(pl);
    } 
}
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.geom.*;
import java.awt.geom.Line2D;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class PanelLicznik extends JPanel implements Runnable
{
    int srodek = 450;
    Image bg;
    int a = 400, t = 0, v = 0, i = 0;
    double x = 152, y = 756;
    public PanelLicznik() {  
       Thread watek1 = new Thread(this);
       watek1.start();
    }

    @Override
    public Dimension getPreferredSize() { 
        return new Dimension(900, 900); 
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g; 
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        bg = new ImageIcon(this.getClass().getResource("s.gif")).getImage();
        g2.drawImage(bg,0,0,null); 
        Line2D wsk = new Line2D.Double(srodek,srodek,x,y);
        g2.setColor(new Color(255,255,255));
        g2.setStroke(new BasicStroke(15.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER));
        g2.draw(wsk);
    }

    @Override
    public void run() {
      t = 3;
      v = 100; 
      i = 0
      while(i < v){
         try{  
            Thread.sleep(100);
         } 
         catch(Exception ek) {}
         double stopien = 231.4 - ((360*v)/280);
         double radSek = Math.toRadians(stopien);
         x = srodek + (a * Math.cos(radSek));   
         y = srodek - (a * Math.sin(radSek));
         repaint();
         i++;
      }
    }
 }
panelicznik.java:

    import javax.swing.JApplet;

public class Licznik extends JApplet {
    @Override
    public void init() {
        setSize(900,900);
        PanelLicznik pl=new PanelLicznik();
    add(pl);
    } 
}
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.geom.*;
import java.awt.geom.Line2D;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class PanelLicznik extends JPanel implements Runnable
{
    int srodek = 450;
    Image bg;
    int a = 400, t = 0, v = 0, i = 0;
    double x = 152, y = 756;
    public PanelLicznik() {  
       Thread watek1 = new Thread(this);
       watek1.start();
    }

    @Override
    public Dimension getPreferredSize() { 
        return new Dimension(900, 900); 
    }

    @Override
    public void paintComponent(Graphics g) {
        Graphics2D g2 = (Graphics2D)g; 
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        bg = new ImageIcon(this.getClass().getResource("s.gif")).getImage();
        g2.drawImage(bg,0,0,null); 
        Line2D wsk = new Line2D.Double(srodek,srodek,x,y);
        g2.setColor(new Color(255,255,255));
        g2.setStroke(new BasicStroke(15.0f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER));
        g2.draw(wsk);
    }

    @Override
    public void run() {
      t = 3;
      v = 100; 
      i = 0
      while(i < v){
         try{  
            Thread.sleep(100);
         } 
         catch(Exception ek) {}
         double stopien = 231.4 - ((360*v)/280);
         double radSek = Math.toRadians(stopien);
         x = srodek + (a * Math.cos(radSek));   
         y = srodek - (a * Math.sin(radSek));
         repaint();
         i++;
      }
    }
 }

之前重置
i
,而

v = 100;
i = 1; // if you want 99 times
while (i<v) { ...
v=100;
i=1;//如果你想要99次

while(iReset
i
while

v = 100;
i = 1; // if you want 99 times
while (i<v) { ...
v=100;
i=1;//如果你想要99次

while(iYour
i
是全局的,您从不重置它。除了变量重置问题,Thread.sleep()可能是一个问题:您的
i
是全局的,您从不重置它。除了变量重置问题,Thread.sleep()可能是一个问题可能是一个问题:或者更好的做法是,将
i
也设为该方法的局部变量。我添加了它,但它仍然循环一次:(向我们展示方法
repaint()
。我怀疑您在
repaint()中做了一些操作)
修改
i
。否则将
v=100;i=1;
替换为
int ax=100;int bx=1;
并在循环中适当地替换
v
i
,看看它是否仍然只循环一次。我将其更改为ax和bx,但它没有帮助。我不明白显示“重新绘制”是什么意思。我没有做任何事情你确定repaint()没有更改吗?我正在尝试查看循环还会在哪里中断,到目前为止还看不到任何其他问题。或者更好的是,将
I
也作为该方法的局部变量。我添加了它,但它仍然循环一次:(向我们展示方法
repaint()
。我怀疑你在
repaint()中做了一些事情)
修改
i
。否则将
v=100;i=1;
替换为
int ax=100;int bx=1;
并在循环中适当地替换
v
i
,看看它是否仍然只循环一次。我将其更改为ax和bx,但它没有帮助。我不明白显示“重新绘制”是什么意思。我没有做任何事情你确定repaint()没有更改吗?我正在尝试查看循环还会在哪里中断,目前还看不到任何其他问题。