2014-04-16 7 views
0

나는 거의 가지고 있다고 생각합니다.
내 PhraseGameController 클래스 _____ 변수로 해결할 수 없음

내 오류 메시지

이 "방법 isHidden()이 유형에 대한 정의는"문자가 변수에 해결 될 수없는 ""isHidden 변수에 해결 될 수 "있습니다"isHidden을 "발견되지 PhraseGameController 그것이 숨겨진 경우

●이 볼 수있는 currentPhrase

○ 검사의 각 문자를 통해 이동 (내 문제 영역을 언급한다)○있는 경우 isWon을 false로 설정하십시오. break를 사용하여 루프를 종료하십시오.

반환 isWon

package edu.htc.java1.phrasegame; 
import edu.htc.java1.phrasegame.model.*; 

import java.util.ArrayList; 

public class PhraseGameController { 

    private Phrase currentPhrase; 
    private ArrayList<Character> guessed; 
    private ArrayList<Player> players; 
    boolean isRoundWon;Letter letter; 

    PhraseGameController Player = new PhraseGameController(); 


    public void addPlayer(String name) { 
     Player player= new Player(name); 
     players.add(player); 

    } 
public boolean isRoundWon(boolean isWon) { 
isWon = true; 
letter=new Letter(); 
    if(letter.isHidden() = true) { ///<<<< Problem area, isHidden 
     isWon = false; 
     break; 
    } else if { (letter.isHidden() = false); ///<<<< Problem area, isHidden 
    isWon = true; 
    return isWon; 
    break; 
    } 

    public ArrayList<Player> getPlayers() { 
     return players; 
    }       









    public boolean doPlayerGuess(Character play) { 

     Character guess = Character.toUpperCase(play); 
     if(guessed.contains(play)){ 
      throw new IllegalStateException("the letter was already guessed"); 
    } else if (!String.valueOf(play).matches("[A-Z]")) { 
     throw new IllegalStateException("the guess should be a letter from A­Z"); 
    } 

    guessed.add(guess); 
    return currentPhrase.guessLetter(guess); 

    } 







    public PhraseGameController(){ 
    currentPhrase = new Phrase("This is only a test"); 
    guessed = new ArrayList<Character>();  
    } 



    public Phrase getCurrentPhrase() { 
     return currentPhrase; 
    } 
    public void setCurrentPhrase(Phrase currentPhrase) { 
     this.currentPhrase = currentPhrase; 
    } 

    public void setGuessedLetters(ArrayList<Character> guessed) { 
     this.guessed = guessed; 
    } 
    public ArrayList<Character> getGuessedLetters() { 
     return guessed; 
    } 
} 

package edu.htc.java1.phrasegame.model; 

public class Letter { 
public char letter; 

public boolean isHidden; 

public char getLetter() { 
    return letter; 
} 
public boolean isHidden() { 
    return isHidden; 
} 

public void unhide() { 
    isHidden = false; 

} 
public Letter(char letter) { 
    this.letter = letter; 
    if (String.valueOf(letter).matches("[A-Z]")) { 
     isHidden = true; 
    } 
} 

}

+1

봐 ...하는 데 도움이하지만 여전히 나는 편지에 대한 로컬 변수를 만들 필요가 말한다 –

답변

0

이렇게 하시겠습니까? Letter letter = new Letter(); 그 letter.isHidden()하지만 모든 관련 질문에

package edu.htc.java1.phrasegame; 
import edu.htc.java1.phrasegame.model.*; 

import java.util.ArrayList; 

public class PhraseGameController { 

    private Phrase currentPhrase; 
    private ArrayList<Character> guessed; 
    private ArrayList<Player> players; 
    boolean isRoundWon;Letter letter; 

    PhraseGameController Player = new PhraseGameController(); 


    public void addPlayer(String name) { 
     Player player= new Player(name); 
     players.add(player); 

    } 
public boolean isRoundWon(boolean isWon) { 
isWon = true;letter=new Letter(); 
    if(letter.isHidden() = true) { ///<<<< Problem area, isHidden 
     isWon = false; 
     break; 
    } else if { (letter.isHidden() = false) ///<<<< Problem area, isHidden 
    isWon = true; 
    return isWon; 
    break; 
    } 

    public ArrayList<Player> getPlayers() { 
     return players; 
    }  
+0

생성자 Letter()는 정의되지 않습니다. – user3381466

0

당신은 액세스하는 방법을 잘못 ●.

isHidden.letter

또한 모두 퍼터 = true을하지 letter.isHidden()

해야한다. 첫째, 부울 표현식은 어쨌든 평가되므로 아무 것도 비교하지 않아도됩니다. 둘째, == 또는 .equals()를 사용하여 두 값을 비교해야합니다. =는 할당을위한 것입니다.

+0

후. 공개적으로, 어쩌면 PhraseGameController 클래스가 레터 클래스에서 그것을 보지 못하는 이유를 모르겠다. – user3381466

+0

네, Letter 클래스를 가지고 있지만 실제로 객체를 만들어야합니다. 도움이 될 JqueryLearner의 회신을 참조하십시오. –

0

IsHidden이 변수로 정의되지 않았습니다. 그것은 방법입니다. .isHidden()으로 호출해야합니다.

관련 문제