2017-03-22 4 views
1

私のコンピュータプログラミングコースでは、基本的な単語推測ゲームを作成するように求められました。彼らが推測され、秘密の言葉に入っているなら、文字を置く。現在私が持っているものは次のとおりです。なぜ私の単語推測プログラムは、文字が秘密の単語に入っていてもダッシュに出力されない

public static void main(String[] args) { 
    String sW = ""; 
    int numG = 0; 
    String flag = "!"; 
    String wordSF = "", updatedW = ""; 
    String charG, wordG = ""; 

    int num1 = (int) (20 * Math.random() + 1); 
    switch (num1) { 
     case 1: 
     if (num1 == 1) { 
      sW = "soup"; 
     } 
     break; 
     case 2: 
     if (num1 == 2) { 
      sW = "money"; 
     } 
     break; 
     case 3: 
     if (num1 == 3) { 
      sW = "brain"; 
     } 

     break; 
     case 4: 
     if (num1 == 4) { 
      sW = "colour"; 
     } 
     break; 
     case 5: 
     if (num1 == 5) { 
      sW = "batman"; 
     } 
     break; 
     case 6: 
     if (num1 == 6) { 
      sW = "design"; 
     } 
     break; 
     case 7: 
     if (num1 == 7) { 
      sW = "media"; 
     } 
     break; 
     case 8: 
     if (num1 == 8) { 
      sW = "computer"; 
     } 
     break; 
     case 9: 
     if (num1 == 9) { 
      sW = "monitor"; 
     } 
     break; 
     case 10: 
     if (num1 == 10) { 
      sW = "password"; 
     } 
     break; 
     case 11: 
     if (num1 == 11) { 
      sW = "textbook"; 
     } 
     break; 
     case 12: 
     if (num1 == 12) { 
      sW = "mountain"; 
     } 
     break; 
     case 13: 
     if (num1 == 13) { 
      sW = "sweater"; 
     } 
     break; 
     case 14: 
     if (num1 == 14) { 
      sW = "darkness"; 
     } 
     break; 
     case 15: 
     if (num1 == 15) { 
      sW = "flood"; 
     } 
     break; 
     case 16: 
     if (num1 == 16) { 
      sW = "plastic"; 
     } 
     break; 
     case 17: 
     if (num1 == 17) { 
      sW = "elephant"; 
     } 
     break; 
     case 18: 
     if (num1 == 18) { 
      sW = "cabinet"; 
     } 
     break; 
     case 19: 
     if (num1 == 19) { 
      sW = "speaker"; 
     } 
     break; 
     case 20: 
     if (num1 == 20) { 
      sW = "electronic"; 
     } 
     break; 
    } 
    Scanner input = new Scanner(System.in); 
    for (int i = 0; i < sW.length(); i++) { 
     wordSF += "-";        
    } 
    System.out.println(wordSF + "\n");    
    do { 
     System.out.print("Enter a letter or ! to guess the word"); 
     charG = input.nextLine(); 
     charG = charG.toUpperCase(); 
     numG++; 
     if (sW.contains(charG)) { 
      updatedW = wordSF.substring(0, sW.indexOf(charG)); 
      updatedW += charG; 
      updatedW += wordSF.substring(sW.indexOf(charG) + 1, wordSF.length()); 
      wordSF = updatedW; 
     } 

     System.out.println(wordSF + "\n"); 
    } while (!charG.equals(flag) && !wordSF.equals(sW)); 

    if (charG.equals(flag)) { 
     System.out.println("What is your guess? "); 
     wordG = input.nextLine(); 
     wordG = wordG.toUpperCase(); 
    } 
    if (wordG.equals(sW) || wordSF.equals(sW)) { 
     System.out.println("You won"); 
    } else { 
     System.out.println("you lost"); 
    } 
    System.out.println("The secret word is " + sW); 
    System.out.println("You made " + numG + " guesses."); 
// TODO code application logic here 
} 

} 

答えて

1

このコードでは、toUpperCase()が必要です。あなたの言葉はすべて小文字です。大文字のアルファベットは、ASCII値が異なるため、小文字の英字には含まれません。 toLowerCase()に変更すると、それが満たされます。

 charG = input.nextLine(); 
     charG = charG.toLowerCase(); 
     numG++; 
     if (sW.contains(charG)) { 
      updatedW = wordSF.substring(0, sW.indexOf(charG)); 
      updatedW += charG; 
      updatedW += wordSF.substring(sW.indexOf(charG) + 1, wordSF.length()); 
      wordSF = updatedW; 
     } 
+0

すべてを修正していただきありがとうございます –