线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException?

时间:2013-11-13 00:39:18

标签: java

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)

2 个答案:

答案 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));

其中cchar