2016-12-18 4 views
1

Android Studio에서 문장의 각 문자의 개수를 계산할 수있는 응용 프로그램을 작성하고 있습니다. 예 : 나는이에 넣어 그래서 만약유니 코드 문자를 동적으로 반복합니다.

// Input 
String sentence = "abbdddd"; 

// Output 
a:1; b:2; c:0; d:4; e:0; f:0; // And so on 

그러나 나는 또한,이 암하라어 문자를 계산하려면 :

String sentence = "abcሀሁሂ"; 

그것은 나에게 줄 것입니다 : 순간

a:1; b:1; c:1 ... ሀ:1; ሁ:1; ሂ:1; 

, 내가 두 개의 ArrayLists, cycle 및 letterCount를가집니다. 주기에는 가능한 모든 문자가 입력 된 문장의 문자가 될 수 있습니다. letterCount는 cycle과 같은 크기이고 런타임에는 모든 값이 0입니다. 문장을 입력하면 주기적으로 일치하는 단어를 찾습니다 (문자가 영어 또는 amharic 인 경우 찾을 수 있음). 일치하는 항목을 찾으면 letterCount로 이동하여 해당 값에 1을 더합니다. 따라서 문장의 첫 글자가 "a"이면 letterCount의 첫 번째 값으로 이동하여 하나를 더합니다. "c"이면 letterCount의 세 번째 값으로 이동하여 하나를 더합니다. 사이클 letterCount 내부 값은 동적 for 루프 사용하여 추가된다

for (int i = 97; i < 123; i++) { 
     char val = (char)i; // This is where the problem lies...I think 
     cycle.add(val); 
     letterCount.add(0); 
    } 

을 그러나 하 "(숯) 나"암하라어 문자가 포함되지 않은 ASCII 문자로 변환한다. 그렇다면 ASCII를 통해 루핑하는 대신 유니 코드 문자를 반복하여 순환에 추가하는 방법이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

범위 U + 1200에서 U + 137F 범위의 유니 코드는 암하 기뿐만 아니라 에티오피아도 포함하므로 BMP (Basic Multilingual Plane)에 존재하며 16 비트 값으로 나타낼 수 있습니다.

는 고 "(문자)를 I"는 ASCII 문자 [???]

false로 변환한다. 다른 언어와 달리 Java의 char은 2 바이트 크기이므로 목적에 충분합니다.

자세한 내용은 다음을 참조하십시오. Comparing a char to a code-point?

+0

응답 해 주셔서 감사합니다. 그러나, 내가 암시 한 바에 따르면, Amharic의 유니 코드 값에는 문자 (예 : \ u126B)가 포함되어 있으며 숫자뿐만 아니라 문자를 반복하는 방법을 모르겠습니다. 또한 암하라 어 문자가 많기 때문에 ArrayLists에 하드 코딩하고 싶지 않습니다. 내 질문을 다시 말해야합니까? –

+0

나는 아직도 당신이 무엇을 구하려고하는지 확신하지 못합니다. 수행 방법을 모르는 부분을 정확하게 표현하는 방법을 결정해야합니다. 예를 들어, 유니 코드 코드 포인트를 16 진수 리터럴 표기법으로 정수로 쓸 수 있다는 것을 알고 있습니까? 'int i = 0x126B' –

+0

지금 해결했습니다. 내가 필요한 것은 숫자를 해당 문자로 변환하기위한 몇 가지 방법 (유니 코드 여야 함)이었습니다. 내가 사용한 코드는 다음과 같다. for (int i = 4608; i <4954; i ++) {char val = (char) i; cycle.add (val); letterCount.add (0);} for 루프에 넣고 반복하기 때문에 어떤 글자도 원하지 않았습니다. 어쨌든, 도와 줘서 고마워! :) –

관련 문제