2015-12-02 35 views
-7

我有一个奇怪的问题,与if语句。我正在检查布尔是否为真,如果它是if语句必须运行。我System.out.println在许多地方的布尔值,它总是假的,但if语句仍然运行。任何帮助?奇怪的是,如果语句总是运行,即使条件不符合

import java.util.ArrayList; 

public class GameLoop extends Thread { 
private Boolean running; 
private ArrayList<Meteor> meteorArrayList; 
private Boolean win; 
private GameScreen gameScreen; 

public GameLoop(GameScreen gameScreen, ArrayList<Meteor> meteorArrayList) 
{ 
    setMeteorArrayList(meteorArrayList); 
    setGameScreen(gameScreen); 
    setRunning(true); 
    setWin(false); 
} 

@Override 
public void run() 
{ 
    while (running) 
    { 
     if(checkWin()); 
     { 
      System.out.println(checkWin()); 
      gameScreen.winGame(); 
     } 
    } 
} 

public Boolean checkWin() 
{ 
    if(getMeteorArrayList().isEmpty()) 
    { 
     setWin(true); 
    } 
    else 
    { 
     setWin(false); 
    } 
    System.out.println(getWin()); 
    return getWin(); 
} 

public void cancel() 
{ 
    interrupt(); 
} 

//======================GETTER EN SETTERS============================= 


public Boolean getRunning() { 
    return running; 
} 

public void setRunning(Boolean running) { 
    this.running = running; 
} 

public ArrayList<Meteor> getMeteorArrayList() { 
    return meteorArrayList; 
} 

public void setMeteorArrayList(ArrayList<Meteor> meteorArrayList) { 
    this.meteorArrayList = meteorArrayList; 
} 

public Boolean getWin() { 
    return win; 
} 

public void setWin(Boolean win) { 
    this.win = win; 
} 

public GameScreen getGameScreen() { 
    return gameScreen; 
} 

public void setGameScreen(GameScreen gameScreen) { 
    this.gameScreen = gameScreen; 
} 

}

+4

'如果(checkWin());' - 删除';' – Eran

+0

.....总是一个愚蠢的分号,我的生活故事。 *叹* thnx指出:) – Zeepblok

+0

你怎么能说'if'语句运行?它没有做任何有后果的事情。 –

回答

4

你必须在该行的代码小语法错误。

而不是

if (checkWin()); 

应该

if (checkWin()) 

取出;