2013-11-13 3 views
-1
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;»Исключение в теме "main" java.lang.ArrayIndexOutOfBoundsException?

Выход: Введите ваше предположение: в в _ _ _ _ _

Введите ваше предположение: б _ _ _ _ _ аб

Введите ваше предположение: е _ _ _ _ _ ABF

Введите ваше предположение: d A _ _ _ _ _ abfd

Введите ваше предположение: е _ _ _ _ _ abfdf

Введите ваше предположение: г _ _ _ _ _ abfdfr

Введите ваше предположение: е _ _ _ _ _ abfdfrf

Введите ваше предположение: пИсключение в потоке «основного» java.lang.ArrayIndexOutOfBoundsException: 7 на Hangman1.main (Hangman1.java:35)

ответ

0

Либо увеличить размер массива т.е. array2 до более чем 7 или использовать автоматический растет List.

List<String> list= new LinkedList<String>(); 

    list.add(String.valueOf(c)); 

где c является char.

2
array2[k] = character; 
     ^------ k == 7 on the last iteration, but array2 is only of size 7. 

Изменить размер массив2 8:

array2 = new char[8]; 

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

+0

Поскольку цикл заполняется итерацией numofchances times, тогда OP должен создать массив2 с длиной numofchances. Лучше использовать одну и ту же переменную, так как каждый изменяется, оба изменяются. Или, еще лучше, как вы предположили, сделать его постоянным. – Brandon

Смежные вопросы