首页 > 解决方案 > 我无法让 Java .Replace 对象根据扫描仪输入更改我的字符串

问题描述

我正在使用扫描仪将字符串值放入 currentGuess,然后我有一个名为“alphabet”的方法,其中包含一个简单的字母字符串,我想要一个字母,无论是用户放入扫描仪的 a、b、c,用 _ 替换 Alphabtet String 中的字母或采取。这不再像以前那样发生了。我不知道我做错了什么。在“扫描仪”下方是一个名为“alphabet()”的对象;它会检查您的信件并更新列表并返回。该程序类似于拼字游戏,用户输入一个字母,然后从字母表中删除该字母。只有被替换的字母是 'abcdefg'so 7,这是 while 循环设置的值,但出于某种奇怪的原因,没有其他内容。如果我将字符串中的第一个字母设置为“h”,然后键入 h,它会改变那封信。我将为感兴趣的人提供一小部分问题代码和我的整个代码。如果有人帮助我,我会很高兴。

private static String alphabet()
{
    System.out.println("debugging:underneath alphabet string. >"+currentGuess+"<");
    for(int i=0;i<alphabet.toCharArray().length;i++){
            if(currentGuess.contains(alphabet.toCharArray()[i]+""))
            {   
                System.out.println("debugging: >"+currentGuess+"<");
                alphabet=alphabet.replace((alphabet.toCharArray()[i]+""), "test");
                
            }else if(currentGuess.contains(Vowels.toCharArray()[i]+""))
            {
            System.out.println("You have just entered a Vowel, board not affected.");
            }


import java.util.Scanner;

导入 java.util.Arrays;

public class scrabble{

    
    private static String alphabet = "[b][c][d][f][g][h][j][k][l][m]\n[n][p][q][r][s][t][v][w][x][y][z]";
    private static String currentGuess = "";
    private static String guessedLetters = "";
    private static String currentPlayer;
    private static int letterValue = 0;
    private static int playerNumber = 1;
    private static String playerTwo;
    private static String playerOne;
    private static String Response = "";
    private static int playerTwoScore = 0;
    private static int playerOneScore = 0;
    private static int playerTurnScore = 0;
    private static String playerLetter = "";
    private static int finalScores = 0;
    private static int duplicateLetterValue = 0;
    private static String Vowels = "[a][e][i][o][u]";
    
    public static void main(String args[]){
    Scanner scan = new Scanner(System.in);
    System.out.println("\nThis is the main console.");
    System.out.println("Type Y to begin or N to exit.");
    
    if(new Scanner(System.in).next().equalsIgnoreCase("y")){
        System.out.println("Player one, enter your name: ");
        playerOne = scan.next();
        System.out.println("Player two, enter your name: ");
        playerTwo = scan.next();
        
        currentPlayer();
        startGame();
    }
    else
    {
        System.out.println("Goodbye.");
        System.exit(0);
    }
}

private static void startGame()
{
    int i=0;
    System.out.println("     <--Scrabble Board-->");
    System.out.print(alphabet()+"\n");
    System.out.println("\nNext Turn is: "+currentPlayer);
//if(currentGuess.equals("quit")){
    //if(currentGuess.equals("pass")){
        
        
for(i=0;i<7;i++){
    duplicateLetterValue=letterValue;
    guessedLetters+=currentGuess;
    playerLetter+=currentGuess;
    playerTurnScore+=letterValue;
    
    System.out.println("\n"+currentPlayer+": Enter a letter: ");
    
    currentGuess=new Scanner(System.in).next();
    
    //usedLetters();
    alphabet();
    System.out.println("debugging(below used letters and alphabet): >"+currentGuess+"<");
    System.out.println("current player:" +currentPlayer+"\n");
        switch(currentGuess.toUpperCase())
        {
        case "A":
        int a=9;
        letterValue =9;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        case "B":
        int b=2;
        letterValue =2;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        case "C":
        int c=9;
        letterValue =9;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        case "D":
        int d=4;
        letterValue =d;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "E":
        int e=12;
        letterValue =e;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "F":
        int f=2;
        letterValue = f;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "G":
        int g=3;
        letterValue =g;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "H":
        int h=2;
        letterValue =h;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "I":
        letterValue =9;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "J":
        int j=1;
        letterValue =j;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "K":
        int k=1;
        letterValue =k;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "L":
        int l=4;
        letterValue =l;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "M":
        int m=2;
        letterValue =m;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "N":
        int n=6;
        letterValue =n;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "O":
        int o=8;
        letterValue =o;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "P":
        int p=2;
        letterValue =p;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "Q":
        int q=1;
        letterValue =q;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "R":
        int r=6;
        letterValue =r;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "S":
        int s=4;
        letterValue =s;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "T":
        int t=6;
        letterValue =t;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "U":
        int u=4;
        letterValue =u;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "V":
        int v=2;
        letterValue =v;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "W":
        int w=2;
        letterValue =w;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "X":
        int x=1;
        letterValue =x;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "Y":
        int y=2;
        letterValue =y;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        
        case "Z":
        int z=1;
        letterValue =z;
        System.out.println(">Value of "+currentGuess.toUpperCase()+" is "+letterValue);
        
        break;
        default:
        System.out.println("Only permitted to use a single character.");
        startGame();
        break;
        }
    }
        System.out.println("\nRemaining letters are: \n"+alphabet());
        playerOneTurn();
        System.out.println("debugging: below Switch statement>"+currentGuess+"<");
    //}
        //currentGuess.equals(" ");
        //currentPlayer();
        //startGame();
//}
        //System.out.println("You have chosen to exit the game.");
        //finalScores();
        
}
            private static void playerOneTurn()
        {
            System.out.println("debugging:inside player one Turn >"+currentGuess+"<");
            //if(currentPlayer==playerTwo){
            //playerTwoTurn();
        //}
        
            playerTurnScore=playerTurnScore -duplicateLetterValue;
            playerLetter+=currentGuess;
            System.out.print(currentPlayer +"'s word is: "+playerLetter);
            System.out.println("\nEnter (Y) if both players agree on the word or anything else if you disagree: ");
            Response=new Scanner(System.in).next();
            
            if(Response.equalsIgnoreCase("y")&&currentPlayer == playerOne)
        {

            System.out.print("\nPlayer one score has changed.");

            playerOneScore+=playerTurnScore;
            
            System.out.println("\nPlayer one Score: "+playerOneScore+"\n");
            playerLetter="";
            
            currentPlayer();
            startGame();

            

            }else if(Response.equalsIgnoreCase("y")&&currentPlayer == playerTwo)
            {
    
            playerTwoTurn();    

            }else{
            System.out.println("Word denied.");
            System.exit(0);
            }
        }
        
        private static void playerTwoTurn()
        {
            System.out.println("inside player two turn >"+currentGuess+"<");
            currentPlayer();
            System.out.println("\nNext Turn is: "+currentPlayer);
            
            guessedLetters += currentGuess;
            System.out.print("Overall used letters: "+guessedLetters);
            System.out.print("\nPlayer two score has changed.");
            playerTwoScore+=playerTurnScore;
            System.out.print("\nPlayer two Score: "+playerTwoScore);
            startGame();
        }
    
private static String alphabet()
{
    System.out.println("debugging:underneath alphabet string. >"+currentGuess+"<");
    for(int i=0;i<alphabet.toCharArray().length;i++){
            if(currentGuess.contains(alphabet.toCharArray()[i]+""))
            {   
                System.out.println("debugging: >"+currentGuess+"<");
                alphabet=alphabet.replace((alphabet.toCharArray()[i]+""), "test");
                
            }else if(currentGuess.contains(Vowels.toCharArray()[i]+""))
            {
            System.out.println("You have just entered a Vowel, board not affected.");
            }
}   
return alphabet;
}
private static void currentPlayer()
    {
    if(playerNumber==1)
        {
            currentPlayer=playerOne;
            playerNumber+=1;
        }
        else{
            currentPlayer=playerTwo;
            playerNumber-=1;
        }
    }
    
    private static void finalScores(){
    
        if(playerOneScore>playerTwoScore){
        System.out.println("Player one wins.");
        System.exit(0);
        }else{
        System.out.println("Player two wins.");
        System.out.print(playerTwoScore);
        System.exit(0);
    }
}

private static void usedLetters()
{
    for(int i=0;i<currentGuess.toCharArray().length;i++)
    {
        if(guessedLetters.contains((currentGuess.toCharArray()[i]+"")))
        { 
            //currentGuess=currentGuess.replace((currentGuess.toCharArray()[i]+""), "");
            System.out.println(">Those letters were previously used.");
            playerTurnScore=playerTurnScore-duplicateLetterValue;

        }
    }
}

}

标签: javaarrays

解决方案


推荐阅读