Netbeans 为什么我的word guess程序不将字符输出到破折号中,即使字符位于机密单词中

Netbeans 为什么我的word guess程序不将字符输出到破折号中,即使字符位于机密单词中,netbeans,Netbeans,因此,在我的计算机编程课程中,我们被要求创建一个基本的猜字游戏,我想知道为什么我的程序没有把猜出来的字符放在秘密单词中。以下是我目前拥有的: public static void main(String[] args) { String sW = ""; int numG = 0; String flag = "!"; String wordSF = "", updatedW = ""; String charG, wordG = ""; int

因此,在我的计算机编程课程中,我们被要求创建一个基本的猜字游戏,我想知道为什么我的程序没有把猜出来的字符放在秘密单词中。以下是我目前拥有的:

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
}

}
publicstaticvoidmain(字符串[]args){
字符串sW=“”;
int numG=0;
字符串标志=“!”;
字符串wordSF=“”,updatedW=“”;
字符串字符,wordG=“”;
int num1=(int)(20*Math.random()+1);
开关(num1){
案例1:
如果(num1==1){
sW=“汤”;
}
打破
案例2:
如果(num1==2){
sW=“金钱”;
}
打破
案例3:
如果(num1==3){
sW=“大脑”;
}
打破
案例4:
如果(num1==4){
sW=“颜色”;
}
打破
案例5:
如果(num1==5){
sW=“蝙蝠侠”;
}
打破
案例6:
如果(num1==6){
sW=“设计”;
}
打破
案例7:
如果(num1==7){
sW=“媒体”;
}
打破
案例8:
如果(num1==8){
sW=“计算机”;
}
打破
案例9:
如果(num1==9){
sW=“监视器”;
}
打破
案例10:
如果(num1==10){
sW=“密码”;
}
打破
案例11:
如果(num1==11){
sW=“教科书”;
}
打破
案例12:
如果(num1==12){
sW=“山地”;
}
打破
案例13:
如果(num1==13){
sW=“毛衣”;
}
打破
案例14:
如果(num1==14){
sW=“黑暗”;
}
打破
案例15:
如果(num1==15){
sW=“洪水”;
}
打破
案例16:
如果(num1==16){
sW=“塑料”;
}
打破
案例17:
如果(num1==17){
sW=“大象”;
}
打破
案例18:
如果(num1==18){
sW=“内阁”;
}
打破
案例19:
如果(num1==19){
sW=“扬声器”;
}
打破
案例20:
如果(num1==20){
sW=“电子”;
}
打破
}
扫描仪输入=新扫描仪(System.in);
对于(int i=0;i
在这段代码中,您有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;
      }

谢谢你帮我修复了一切