2016-07-09 2 views
0

나는 약간의 Java 연습 문제를 겪고 있으며,이 코드를 완전히 이해하지 못했습니다.문자로 배열 요소에 액세스

public static boolean permutation(String s, String t) { 
     if (s.length() != t.length()) { 
      return false; 
     } 

     int[] letters = new int[128]; 

     char[] s_array = s.toCharArray(); 
     for (char c : s_array) { 
      letters[c]++; 
     } 
     // omitted other code 
} 

letters의 내용을 인쇄 할 때 정수 배열을 볼 수 있습니다. 문자열에 따라 배열에 01의 변형을 반환하는 함수에 전달합니다.

Array 클래스가 charint으로 변환하고 있다고 생각했습니다. 도움이되는 print 문을 추가했지만 d의 값이 13임을 알았지 만 여전히 배열의 13 번째 요소가 여전히 0으로 표시됩니다. 그 코드는 다음과 같습니다

import java.util.Arrays; 

public class Main { 

    public static void main(String[] args) { 
     String word1 = "dog"; 
     String word2 = "god"; 
     permutation(word1, word2); 
    } 

    public static boolean permutation(String s, String t) { 
     if (s.length() != t.length()) { 
      return false; 
     } 

     int[] letters = new int[128]; 

     char[] s_array = s.toCharArray(); 
     for (char c : s_array) { 
      System.out.println(Character.getNumericValue(c)); 
      letters[c]++; 
     } 

     System.out.println(Arrays.toString(letters)); 
     return true; 
    } 
} 

출력 :

13 
24 
16 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

Array[char] 구문 번역 무엇 인 내 질문?

답변

1

Character.getNumericValue이 숫자로 "해석"문자를 돌려줍니다에 letters[c]을 의미 할 수있다. 예를 들어 문자 '5'은 단지 5이됩니다. 예를 들어 로마 숫자를 나타내는 유니 코드 문자 또는 16 진수에도 사용할 수 있습니다. (따라서 'd''13'된다.)

을 그러나 적분 값이 예상되는 상황에서 char 사용할 때, 그것의 인코딩을 사용하여 해석된다. 예를 들어 'a'의 코드는 97이므로 array['a']array의 98 번째 요소에 액세스합니다.

두 출력의 불일치 때문입니다. ;)

1

코드는 입력 문자열 s의 문자 수를 계산합니다. 문자 "new int[128]"을 만들면 "정상적인"ASCII 문자를 포함 할 수 있습니다. 그런 다음 letters[c]++은 문자 카운터가 증가합니다 c. char는 자바 int으로 사용하므로 letters[<ASCII index of c>]

관련 문제