2014-12-26 6 views
-2
public void ZeichneFigur(String position) { 
    String[] parts = position.split("\\."); 
    String part0 = parts[0]; 
    String part1 = parts[1]; 
    int k = Integer.valueOf(part1); 
    if (part0.equals("gr")) 
     g.setColor(Color.GREEN); } 

     switch (k) {   
     case 1: 
      g.fillOval(20,20,100,100); 
       Break; 
     case 2: 
      g.fillOval(20,30,100,100); 
       Break; 
     case 3: 
      g.fillOval(20,40,100,100); 
       Break; 
     case 4: 
      g.fillOval(20,50,100,100); 
       Break; 
     case 5: 
      g.fillOval(20,60,100,100); Break;} 

우선, 야만적 인 코딩을 초보자에게 맡깁니다. Im은 선수 색상과 필드가있는 필드의 값을 정의하는 gr.2 형식의 문자열을 취한 다음 해당 위치의 타원을 그리는 short 메서드를 작성하려고합니다. (사실 나는 40 가지 경우가 있는데, 모두 동일합니다.) 내가 컴파일 할 때 ArrayIndexOutOfBoundsException이 발생하고 이유를 찾을 수 없다. 내 인덱스가 범위를 벗어 났음을 의미하는 것으로 이해하지만 gr.1을 입력하면 어떻게 되는가?java.lang.ArrayIndexOutOfBoundsException - java

EDIT : if (part0.equals ("gr")) 및 break 문이 추가되었습니다.

+0

내가 관심을 가질만한 짧은 [java 디버깅 튜토리얼] (http://keysersblog.wordpress.com/2014/04/21/debugging-java-code-a-beginners-guide/)을 작성했습니다. ArrayIndexOutOfBoundsException을 예로 사용합니다. 그것은 당신이 인내심을 가지고 있음을 암시하지만, 만약 당신이 당신의 문제가 'part0' 또는'part1'라고 추측하고 있지 않다면 말입니다. 어느 쪽이든, 어떤 것을 인쇄하면 분명 도움이 될 것입니다. – keyser

+0

'String' 동등성을'=='로 테스트하지 마십시오. –

+1

@kocko 여기에 주요 문제가 아니 었습니다. 나는 그것이 중복이라는 것에 동의하며, 그것은 올바른 것이 아닙니다. – keyser

답변

0

당신이 작성한 코드를 통해 Exception을 얻는 유일한 방법은 parts[] 배열에 하나의 요소 만 있다는 것입니다. 즉, 문자열 position에 "."이 없다는 것을 의미합니다. 즉, 잘못된 방법이 있습니다. 전달 된 문자열이 입력 한 문자열이 아닌 메서드에 문자열을 전달하고 position을 인쇄하여 양식이 무엇인지 확인하십시오.

+1

예. 입력이 잘못되었습니다." – 1nzlinger

+0

당신을 환영합니다 :) 그리고 기꺼이 당신의 문제를 해결했습니다. –

관련 문제