2012-05-13 2 views
-4
Image probe; 

Thread t; 
public int x=410,y=250; 

public void init() 
{ 
    //Images Call 
    probe = getImage(getDocumentBase(),"image/probe.png"); 

    t = new Thread(); 
} 

public void paint(Graphics g) 
{ 
    for(int i=0;i<5;i++) 
    { 
     g.drawImage(probe,x,y,50,50,this); 
     g.setColor(Color.red); 
     System.out.print(i); 
     x=x+10; 
     y=y+10; 
     repaint(); 

     try 
     { 
      t.sleep(100); 
     } catch(Exception e) {} 
    } 
} 

Итак, в этом случае он должен сделать мой цикл в 5 раз правильным? но вместо этого он делает это снова и снова и снова и никогда не останавливается, когда я хочу, чтобы он просто двигался 5 раз, а затем останавливался, но вместо этого он продолжается вечно.Java for loop bug

+6

Да, магический цикл, который не находится в методе или статическом блоке. Уникальное существо, которое можно найти в дикой природе. – Krrose27

+0

'it' does 'what', снова и снова? Не могли бы вы сделать свой вопрос более наглядным, пожалуйста? – Davidann

+0

цикл for никогда не останавливается. – 11684

ответ

4

Если ваша петля находится в методе paint(), и вы вызываете repaint() из цикла, вы вызовете вызов метода постоянно! Цикл цикла не выполняется снова и снова, он выполняется один раз, а затем вызывает себя для вызова снова.

+0

Спасибо! Это сработало. –

+0

и на pastebin он сравнивает i с ничего подобного (int i = 0; i <; i ++;) – 11684

+0

У меня есть другой вопрос. http://i45.tinypic.com/fkbscn.png Зачем это делать? Можете ли вы помочь сделать это, чтобы он не оставил изображение за ним? –

0

Если вы звоните repaint() в свой метод paint(), он будет продолжать звонить по телефону paint() снова и снова.