2014-05-12 1 views
-1

"count"라는 정적 메서드를 작성해야합니다.이 메서드는이 char이 Layout.ROWS에서 발생하는 횟수를 반환하는 매개 변수로 char을 사용합니다. Layout 클래스에있는 문자열 배열). 이렇게하려면 각 행에 루프를 수행하는 외부 루프와 각 문자를 반복하는 중첩 루프가 필요합니다. 이것은 내가 시도한 것입니다 :각 행을 반복하는 외부 루프와 각 문자를 반복하는 중첩 루프

public static int count(char d) 
{ 
    int sum = 0; 
    int i = 0; 

    while (i < Layout.ROWS.length && !Layout.ROWS[i].equals(d)) 
    { 
     i++; 

     if (Layout.ROWS[i].equals(d)) 
     { 
      sum++; 
     } 
    } 

    return sum; 
} 

그러나 작동하지 않습니다. 내 출력은 : 스레드 "main"의 예외 java.lang.ArrayIndexOutOfBoundsException

어떻게해야합니까? 이 Layout.ROWS입니다 : 당신은 char에 문자열 (Layout.ROWS[i])을 비교하기 위해 시도하고

public static final String[] ROWS = { 
    "  p  ex", 
    " .   ", 
    " .   ", 
    " .   ", 
    " .   " 
}; 
+0

당신이 "작동하지 않는"무엇을 의미합니까이이 for 루프를 사용하여 while 루프 acheived 할 수 있지만 많은 청소기 것입니까? –

+0

이것은 내 출력입니다 : "main"스레드의 예외 java.lang.ArrayIndexOutOfBoundsException – user3563945

답변

2

. 배열에있는 String을 반복해야하며 각각 Stringchar을 반복합니다.

public static int count(char d) { 
    int sum = 0; 

    // Iterate over all the strings in Layout.ROWS: 
    for (String str : Layout.ROWS) { 
     // Iterate over the chars of the string: 
     for (int i = 0; i < str.length(); ++i) { 
      if (d == str.charAt(i)) { 
       ++sum; 
      } 
     } 
    } 
    return sum; 
} 
+0

정말 고마워요. – user3563945