2012-04-22 3 views
0

대학 교과 과정에서 Java에서 행맨 게임을 만들고 있는데 내 코드 문제. 내가 실행하는 데있어 개방하지만 추측을 만들기 위해 텍스트 상자에 문자를 입력 할 때, 나는이 오류 얻을했습니다"AWT-EventQueue-0"스레드의 예외 java.lang.ArrayIndexOutOfBoundsException : 0 행맨 게임에서 문자열 배열과 문자열을 비교하려고 할 때

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로 문자열을 분할하고 점은 특별이 의미, 당신은 BTW

String breaker = "[.]"; 

또는

String breaker = "\\."; 

을 설정해야합니다 : 당신은 문자열의 i 번째 문자를받을 필요가있는 경우, 요 s.charAt(i)을 사용할 수 있으며 분할이 필요하지 않습니다 ;-)

+0

당신은 모든 붙여 넣기 코드를 조사 했습니까? 노력 만한다면 1+. –

관련 문제