【发布时间】:2021-06-05 04:59:01
【问题描述】:
我正在用 Java 创建一个 Hangman 游戏,但我在比较字母和单词(字符数组)时使用的循环遇到了一些问题:
public class Hangman{
static String seleccionar(){
//Se selecciona al azar una palabra de la lista
String[] palabras = {"callado","llamar","esgrima","monedero",
"tortuga","semanas","matutino","graduar",
"domador","regazo","vicio","carrito",
"esqueleto","golosinas","zodiaco","anestesia",
"pera","clase","acierto","oliva"};
int numero = 0;
numero = (int)(Math.random() * 9);
String palabra = palabras[numero];
return palabra;
}
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
System.out.println("Ahorcado");
//Método retorna una palabra aleatoria //Method that returns random word
String palabra = seleccionar();
System.out.println(palabra);
char[] letras = palabra.toCharArray();
//Ocultar la palabra //Hiding the word
char[] oculto = new char[palabra.length()];
for (int i = 0; i < palabra.length(); i++){
String underscore = "_";
oculto[i] = underscore.charAt(0);
}
//Here's the issue
int contador = 0;
int s = 0;
for (int k = 0; k < palabra.length(); k++){
char letraUsuario = sc.next().charAt(0);
for (char letra: letras){
if (String.valueOf(letraUsuario).equalsIgnoreCase(String.valueOf(String.valueOf(letra)))){
oculto[s] = letraUsuario;
}
else{
contador += 1;
}
s += 1;
}
for (char letra: oculto){
System.out.print(letra);
}
System.out.println();
if (contador == 7){
break;
}
}
sc.close();
}
所以当我运行它时,终端会显示:
Ahorcado
esgrima
r
___r___
m
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 12 out of bounds for length 7
at Hangman.main(Hangman.java:36)
我不太确定为什么它显示索引 12,它的迭代次数是否超出了我告诉它的次数?
先谢谢了
【问题讨论】:
标签: java arrays char iteration nested-loops