java - 我无法让 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")&¤tPlayer == 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")&¤tPlayer == 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;
}
}
}
}
解决方案
推荐阅读
- c - 使用 mmap() 为 2D 数组初始化共享内存,是否还需要为后续指针映射内存?我应该改用 shm 吗?
- sql - SQLite 中的 Group By 子句
- python - 当 CPython 设置`in` 运算符为 O(n) 时?
- angular - RXJS 在 Websocket 断开连接后重新连接侦听器
- c - 有没有一种快速的方法来删除 glibc 中的 malloc/free/memalign/realloc 钩子?
- python - Pandas 通过两列中的值连接数据帧
- javascript - 使用 for 循环打印
- html - 我将如何根据在什么设备上查看网站来更改网站?
- mongodb - 当我停止写入的服务时,MongoDB 是否有理由继续写入操作?
- c# - 输入字符串的格式不正确。文本更改问题