import java.io.File;
import java.util.*;
import javax.swing.JOptionPane;
public class Hangman1 {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
Random ran = new Random();
Scanner file = new Scanner(new File("word.txt"));
String dictionary = file.nextLine();
char array2[];
array2 = new char[7];
String wordlist[] = {"accoutrements","acumen","anomalistic","auspicious","bellwether","callipygian","circumlocution"};
int number = ran.nextInt(3);
String in = null;
in = wordlist[number];
//System.out.println(number);
String guess;
int numofchances = 8,k=0;
boolean array[],b=true;
array = new boolean[in.length()];
for (int u=0;u<in.length();u++)
{
array[u]=false;
}
while(numofchances >= 1 && b){
numofchances--;
System.out.println("Enter your guess: ");
guess = input.nextLine();
char character = guess.charAt(0);
array2[k] = character;
k++;
for(int i=0;i<in.length();i++){
char c = in.charAt(i);
if(c == character || array[i]==true){
System.out.print(c+" ");
array[i] = true;
}else{
System.out.print("_ ");
}
}
System.out.println();
for(int i=0;i<k;i++){
System.out.print(array2[i]);
}
System.out.println();
b = false;
System.out.println();
for (int i=0;i<in.length();i++){
if (array[i]==false)
b=true;
}
}
}
}
如何解决此错误?每当我输入超过7个字母时,此错误发生在“array2 [k] = character;”
行输出: 输入你的猜测: 一个 一个 _ _ _ _ _ 一个
输入您的猜测: b 一个 _ _ _ _ _ AB
输入您的猜测: F 一个 _ _ _ _ _ ABF
输入您的猜测: d 一个 _ _ _ _ _ abfd
输入您的猜测: F 一个 _ _ _ _ _ abfdf
输入您的猜测: [R 一个 _ _ _ _ _ abfdfr
输入您的猜测: F 一个 _ _ _ _ _ abfdfrf
输入您的猜测: F 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:7 在Hangman1.main(Hangman1.java:35)
答案 0 :(得分:2)
array2[k] = character;
^------ k == 7 on the last iteration, but array2 is only of size 7.
将array2的大小更改为8:
array2 = new char[8];
更好的是,使用这个大小的常量,并在需要的地方使用该常量。
答案 1 :(得分:0)
将数组的大小(array2
)增加到7以上或使用自动增长List
。
List<String> list= new LinkedList<String>();
list.add(String.valueOf(c));
其中c
是char
。