У меня возникают проблемы с заменой символов в массиве char. Я пробовал метод .replace
, но он не работает. Знаете ли вы, как заменить буквы в массиве char, с переменной char GuessedLetter
. Это код всего кода, который я разработал до сих пор:
import java.util.Scanner;
public class Hangman{
public static void main(String []args){
Scanner Input = new Scanner(System.in);
String[] CollectionOfWords = {"apple","banana","pear","plum","watermelon"};
int RadmNumber = (int) Math.ceil (Math.random() * CollectionOfWords.length);
String RadmWord = CollectionOfWords[RadmNumber];
System.out.println(RadmWord);
char[] GenRadmLetter = RadmWord.toCharArray();
char[] GenRadmLetter2 = RadmWord.toCharArray();
for (int x = 0; x<GenRadmLetter.length; x++){
GenRadmLetter[x]='?';
}
System.out.println(String.valueOf(GenRadmLetter));
Scanner input = new Scanner(System.in);
System.out.println("Hello. Guess a letter.");
char GuessedLetter = Input.next().charAt(0);
int RW = RadmWord.indexOf(GuessedLetter);
String GenRadmLetterStr = String.valueOf(GenRadmLetter);
}
}
Спасибо,
Вы пытаетесь изменить String
.
Этот класс неизменен, поэтому, когда вы пытаетесь что-то вроде:
GenRadmLetter[x]='?';
Вы не RadmWord
данные внутри RadmWord
.
Что вы можете сделать, это нечто вроде:
char[] GenRadmLetter2 = new char[RadmWord.length];
for (int x = 0; x < RadmWord.length; x++){
GenRadmLetter[x]='?';
}
String result = new String(GenRadmLetter2);
Хотя, возможно, вы захотите сохранить отображаемую String
в виде массива символов, чтобы можно было легко изменять отображение.
Во-первых, имена переменных должны начинаться с буквы нижнего регистра как таковой. Заглавная буква означает тип класса. Это очень стандартное соглашение, когда дело доходит до Java, и, как таковое, оно помогает читаемости при обмене кодом с другими.
String radmWord = collectionOfWords[radmNumber];
Во-вторых, метод String.indexOf(Char)
возвращает только первый индекс этого символа внутри строки. Поскольку вы хотели бы заменить все вхождения этого символа, вам нужно было бы на самом деле прокрутить слово, проверяющее каждый символ, чтобы увидеть, является ли это признаком, который был угадан. Оттуда вы могли бы заменить этот индекс в своем угадывающем слове. Взгляните на этот код, который я привел в качестве примера, он поможет вам понять, что вам нужно сделать:
String randomWord = "apple";
String guessWord = "?????";
char guess = 'p';
for (int i = 0; i < randomWord.length(); i++) {
if (randomWord.charAt(i) == guess) {
char[] tempGuess = guessWord.toCharArray();
tempGuess[i] = guess;
guessWord = Arrays.toString(tempGuess);
}
}