2017-05-23 7 views
0

이 메서드 내에서 String buildWord는 if(this.guessedLetters.contains(buildWord))에서 사용됩니다. 주 파일로 testProgram을 실행할 때 잘못된 결과가 표시되지만 수동으로 if(this.guessedLetters.contains("" + letter))을 사용하면 작동합니다. 내 질문은 여기서 차이점은 무엇입니까 ?? 왜이 두 동일하지 : if(this.guessedLetters.contains(buildWord))if(this.guessedLetters.contains("" + letter))문자를 Java로 문자열로 변경

public String hiddenWord() { 
    char letter = ' '; 
    String hiddenWord = ""; 
    String buildWord = "" + letter; 
    int i = 0; 
    while (i < this.word.length()) { 
     letter = this.word.charAt(i); 
     if (this.guessedLetters.contains(buildWord)) { // ********** 
      hiddenWord += letter; 
     } else { 
      hiddenWord += '_'; 
     } 
     i++; 
    } 
    return hiddenWord; 
} 
+0

값의 값은, 주요 방법에서있는 "A", "D", "S", "F", "D", 후 KISSA –

답변

2

의 차이는 letter 루프에 업데이트되는 것입니다,하지만 buildWord하지 않습니다 항상 문자열 " "과 같다. 당신이 letter을 다시 지정 후 buildWord = "" + letter;를 추가하는 경우, 그것은 작동합니다

while (i < this.word.length()) { 
    letter = this.word.charAt(i); 
    buildWord = "" + letter;   // <------------ 
    if (this.guessedLetters.contains(buildWord)) 

를 문자열로 문자를 변환 할 수있는 여러 가지 방법에 대한 자세한 내용은 다음을 참조 How to convert a char to a String?

+0

튜토리얼에서 사용되는 단어 그런 식으로 작동하는 방식으로 바꾸면 char 문자가 업데이트 된 값을 보유하는 방법을 혼동하는 것입니다. **'String buildWord = ""+ letter;'** 역시 업데이트되지 않습니까? 예를 들어 : **'char letter = 'K'; **가 업데이트되면, **'buildWord = ""+ letter; **는 **'buildWord = ""+ 'K' ; ** 등 char 글자가 업데이트되면서? –

+0

아니요. 'buildWord = ""+ letter "를 설정하면'letter'의 ** 현재 값 **을 가져 와서 빈 문자열과 연결합니다. 'buildWord'를'letter' 변경으로 업데이트하지 않습니다. 만약''letter '가 변경되면''buildWord''를 갱신해야한다고 생각하십니까? ""+ "문자가 데이터베이스에서 값을 얻는 것과 같이 더 복잡하다면 어떻게 될까요?''buildWord = GetDatabaseValue() + letter; 새 데이터베이스 값을 가져 오거나 이전 캐시 된 값을 사용하여 업데이트하는 방법은 무엇입니까? GetDatabaseValue()가 변경되면 어떻게 될까요? 어떻게 알았을까요? 컴퓨터에 무엇을해야하는지 알려줄 필요가 있습니다. – clcto

+0

예제에서 컴퓨터는'contains +'로 전달 된 값을'' "+ letter' ''식으로 다시 계산하도록 컴퓨터에 명령합니다. – clcto

0

차이가 String.contains입니다 (CharSequence를 s) 메서드는 CharSequence 만 매개 변수로 사용합니다. 의 CharSequence는 인터페이스이며, 기존의 구현 클래스는 다음과 같습니다

CharBuffer를, 세그먼트, 문자열, StringBuffer를, 모두 StringBuilder는

매개 변수로 위 클래스의 하나를 통과 할 수는 없지만 char 문자 (문자)를 buildWord로 변환하려고 할 때 (문자열) 을 CharSe 구현 클래스이므로 그대로 사용해야합니다. 기다림. 상기 기준 CharSequence java documentation위한

String java documentation