2012-04-22 5 views
0

大学の教授のためにJavaでHangmanゲームを作成しています私のコードの問題。私はそれを実行して、オープンするんだけど、私は推測を行うために、テキストボックスに文字を入力するとき、私はこのエラーを取得する:スレッド「AWT-EventQueue-0」の例外java.lang.ArrayIndexOutOfBoundsException:0 Hangmanのゲームで文字列を文字列配列と比較しようとしたとき

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0 
at hangman.HangmanFrame.guessButtonActionPerformed(HangmanFrame.java:164) 
at hangman.HangmanFrame.access$000(HangmanFrame.java:14) 
at hangman.HangmanFrame$1.actionPerformed(HangmanFrame.java:75) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
at java.awt.Component.processMouseEvent(Component.java:6290) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6055) 
at java.awt.Container.processEvent(Container.java:2039) 
at java.awt.Component.dispatchEventImpl(Component.java:4653) 
at java.awt.Container.dispatchEventImpl(Container.java:2097) 
at java.awt.Component.dispatchEvent(Component.java:4481) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166) 
at java.awt.Container.dispatchEventImpl(Container.java:2083) 
at java.awt.Window.dispatchEventImpl(Window.java:2482) 
at java.awt.Component.dispatchEvent(Component.java:4481) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:648) 
at java.awt.EventQueue.access$000(EventQueue.java:84) 
at java.awt.EventQueue$1.run(EventQueue.java:607) 
at java.awt.EventQueue$1.run(EventQueue.java:605) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:621) 
at java.awt.EventQueue$2.run(EventQueue.java:619) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:618) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

、リスト内の最初のエラーに基づいて、私はそれが何かを持っている疑いがありますそれは文字を文字列配列での作業と比較する私の最初の時間だとして、これで何が間違っている私は手掛かりを持っていない

if (playerGuess.equals(arrayToGuess[c])) 

:具体的に

do 
    { 
     if (playerGuess.equals(arrayToGuess[c])) 
     { 
      correct = true; 
      lettersToGet[c] = playerGuess; 
     } 

     c++; 
    } 
    while (c < 6); 

    c = 0; 

:コードのこの部分をどうします各pにユーザーが何を入力したのかを配列の技術で表現します。誰かが助けることを願っています。それ以上の情報が必要な場合は、私に知らせてください。できるだけ早くあなたに連絡します。私はまた、全体のコードは、問題スポッティングを支援するために見ることができるので、短期的なペーストビンを作成しました:Pastebin Link

感謝を

+0

ここで、あなたは 'arrayToGuess'を宣言して割り当てていますか? – Tudor

+0

私は 'public class HangmanFrame extends JFrame'で宣言して、' newGame(); 'メソッドに割り当てて、配列の各要素に文字を入れます。 –

+2

'ArrayIndexOutOfBoundsException'は、配列の不正なインデックスにアクセスしようとしていることを意味します。これは、 'c <0'または' c> = arrayToGuess.length'のときに発生します。配列を作成するコードを投稿します。 – Jeffrey

答えて

3

あなたの問題はsplit方法である - それはreqexpで文字列を分割し、ドットは特別あり意味は、あなたがところで

String breaker = "[.]"; 

または

String breaker = "\\."; 

を設定する必要があります:あなたは文字列のi番目の文字を取得する必要がある場合は、ヨーヨーあなたはs.charAt(i)を使用することができ、分割する必要はありません;-)

+0

あなたはすべてのペーストビンコードを通過しましたか?努力のためだけなら1+。 –

関連する問題