我正在编写一个刽子手游戏,但我遇到了问题,这是整个脚本:
package prueba.ahorcado;
import java.util.Random;
import java.util.Scanner;
public class PruebaAhorcado {
public static void main(String[] args)
{
int vidas = 3;
int aciertos = 0;
int tamaño;
String incognita = "";
String signo = " _";
int veces=0;
int victoria=0;
String[] palabras = new String[]{"CASO","TIEMPO","VIDA","PAIS","CAMPO","CAMBIO","MANOS","FALTA","SEGURIDAD","MERCADO"};
String palabra = (palabras[new Random().nextInt(palabras.length)]);
char[] a = palabra.toCharArray();
char[] b = incognita.toCharArray();
tamaño = palabra.length();
while (veces!=tamaño)
{
incognita=incognita+signo;
veces++;
}
while(aciertos!=tamaño){
System.out.println("Vidas: " + vidas);
System.out.println(palabra);
System.out.println(incognita);
Scanner scanner = new Scanner(System.in);
String opcion = scanner.nextLine().toUpperCase();
if (palabra.contains(opcion))
{
int Indice = palabra.indexOf(opcion);
System.out.println(Indice);
//The problem is here
aciertos++;
}
else
{
vidas = vidas-1;
}
if (vidas==0)
{
System.out.println("Has perdido");
System.exit(0);
}
}
if (aciertos==tamaño)
{
System.out.println("Has ganado");
}
}
问题在于必须将_更改为已回答的字母,然后将其打印出来。例如:如果单词是" CASO"它会打印
Vidas: 3
( _ _ _ _
如果我输入" C"它必须打印:
C _ _ _
答案 0 :(得分:0)
所以...我在这里回答任何问题,请原谅;)
我认为最好的方法是在replace
对象中使用StringBuilder
方法。像那样:
if (palabra.contains(opcion))
{
int Indice = palabra.indexOf(opcion);
incognita = new StringBuilder( incognita ).replace( 1+2*Indice, 2+2*Indice, opcion ).toString();
System.out.println(Indice);
aciertos++;
}
1+2*Indice
索引在incognita
字符串中具有正确的位置。
我写的这句话并不完美。第二次键入相同的字母时,它无法正常工作。好吧,我认为这是你应该自己思考的事情。
请同样处理代码的纯粹性。对象名称(如Indice
)不应以大写字母开头。不要在变量名中使用'ñ'。还尝试以更合理的方式使用缩进和换行。这对你和我们来说都会更好。
真的,真的开始用英语编码。祝你好运。