2016-04-12 2 views
0

Я относительно новичок в кодировании, и мой учитель попросил нас сделать код для игры в палач. Он сказал нам, что мы должны выполнить это без использования массивов. Мой вопрос идет следующим образом: если у меня есть строка, объявленная пользователем, а затем правильная буква догадывается, как я могу конкретно заменить заменяемое подчеркивание угаданным письмом?Как напечатать букву слова с помощью номера?

Например ...

вход "кошки" типы система "_ _ _ _"

сказать, что я набрал букву "а", и я хочу выход быть:

"_ a _ _" Как я могу получить номер места размещения этой буквы, а затем манипулировать подчеркиванием, чтобы сделать его буквой?

+1

'StringBuilder' – MadProgrammer

+0

Держите это просто , Вы можете использовать четыре переменные, по одному для каждого символа. – zipzit

+0

Но как бы я это сделал, если количество персонажей полностью зависит от того, что человек набирает? –

ответ

0

Вы можете использовать подстроки. Что-то вроде этого.

String original = "apple"; 
String guessed = original; 
String withUnderscores = "_____"; 

String guess = "a"; 
while (guessed.contains(guess)) 
{ 
    int index = guessed.indexOf(guess); 
    withUnderscores = withUnderscores.substring(0, index) + guess + withUnderscores.substring(index + 1); 
    guessed = guessed.substring(0, index) + "." + guessed.substring(index + 1); 
} 

System.out.println(original); 
System.out.println(guessed); 
-1

Я не совсем понимаю вопрос, но я думаю, что это может помочь.

final String trueWord="cats"; 
String guessWord="____"; 

String input="a"; 

//if the input matches 
if(trueWord.contains(input)){ 

    //last Index of input in trueWord 
    int lastEntry=-1; 

    //hold all indices of input character in trueWord 
    ArrayList<Integer> indices=new ArrayList<>(); 
    while(trueWord.indexOf(input,lastEntry+1) >= 0){ 
     lastEntry=trueWord.indexOf(input); 
     indices.add(lastEntry); 
    } 

    //now replace the characters at the indices 
    StringBuilder newGuessWord = new StringBuilder(guessWord); 

    for(int index:indices){ 
     //replace one character at a time. 
     newGuessWord.setCharAt(index, input.charAt(0)); 
    } 
    //the new word 
    guessWord=newGuessWord.toString(); 

} 
0
  • Использование одной переменной для хранения строки подчеркивания. (Т.е. «____»

  • Используйте другую переменную для хранения строки ответа. (Т.е. «кошки»).

  • Получить вход и и цикл пользователей через строку, принимая символ в каждом индексе. Если какой-либо переменные соответствует входной букве (string1.equals (sTRING2)) заменить символ в строке подчеркивания в любом индексировать цикл. в

Используйте Шар(), чтобы получить символ на месте в строке.

Вы можете сделать это с помощью класс String или StringBuilder. Если вы не узнали о StringBuilder в своих классах, вы, вероятно, не должны использовать его для своего назначения.

-1

Это не самый оптимизированный код, но определенно даст вам представление о том, как можно выполнить свою задачу.

public static void main(String[] args) { 

    final String word = "cats"; 
    Scanner scanner = new Scanner(System.in); 
    System.out.println("Guess the character"); 

    String finalString = ""; 
    char letter = scanner.next().charAt(0); 

    for (char s : word.toCharArray()) { 
     if (s == letter) { 
      finalString += s; 
     } else 
      finalString += "_"; 
    } 

    System.out.println(finalString); 
    scanner.close(); 
} 
0

Попробуйте что-то вроде этого (я предпочел бы иметь догадки на съемочной площадке, было бы более понятно, чем при использовании строки, чтобы держать их):

public String maskUnguessedLetters(String answer, String guessed) { 
    Char MASKED = '_'; 
    StringBuilder sb = new StringBuilder(); 

    for (Char c : answer.toCharArray()) { 
     sb.append(guessed.contains(c.toString()) 
       ? c 
       : MASKED); 
    } 
    return sb.toString(); 
    } 
Смежные вопросы