2012-10-28 6 views
1

그래서 문자 배열의 정수 평균을 찾아야하는이 함수를 만드는 데 문제가 있습니다.문자 배열에서 정수 평균 찾기

내 배열 char [] 문자 = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' 'J'};

저는 A = 32 j = 74와 같은 정수 평균을 찾기 위해 캐스팅을 시도합니다. 정수 값을 더하고 문자로 되돌려 놓겠지 ​​만 지금은 붙어 있습니다.

/******************************************************************************** 
This function will calculate the integer average of characters in the array 
********************************************************************************/ 
public static void average(char [] letters) 
{ 
    int total = 0; 

    char mean; 


    total = total + letters[letters.length]; 
    mean = (char)total/letters.length; 

    System.out.println("The value is " + average(letters)); 
} 
+0

ISO-LATIN-1 또는 유니 코드의 악센트 부호가있는 문자를 지원하고 있습니까? –

+1

잘 유니 코드 사용 – javip

+0

유니 코드를 char 형식으로 저장할 수 없습니다. –

답변

2

이 올바르지 않습니다

total = total + letters[letters.length]; 

이 연산 예외를 트리거 total에 어레이의 끝을지나 값을 추가한다.

for (char ch : letters) 
    total += ch; 

을 또한 total 캐스팅 대신 분할의 결과를 캐스팅 : -이 같은 in 루프

for (int i = 0 ; i != letters.length ; i++) 
    total += letters[i]; 

당신은 또한 for를 사용할 수 있습니다

현재 루프를 필요 :

mean = (char)total/letters.length; 

mean = (char)(total/letters.length); // Note the added parentheses 
+0

그래서 루프는 10이 될 수 없을 때 멈 춥니 다. 그래서 타입 변환 할 필요가 없습니까? – javip

+0

@javip 아니, 캐스트가 필요하지 않습니다. 얼마나 많은 항목을 전달하든 관계없이 배열의 끝에 도달하면 루프가 멈 춥니 다. – dasblinkenlight

+0

@javip 다른 종류의'for' 루프도 사용할 수 있습니다. 제 편집을보세요. – dasblinkenlight

0

이 작업을 수행하는 방법에 대한 연습이 있습니까? 그렇지 않으면 Character 배열을 사용하고 .digit()를 사용하십시오.

그렇다면 올바른 길을 가고 있지만 첫 번째 생각은 아스키 문자를 숫자로 변경하기 위해 적절한 값을 빼서 루프를 돌리면서 새로운 배열에 고정시키고 평균으로 다시 루프하는 것입니다. .

솔직히 나는 이것을 0 루프로 어떻게 시도하는지 보지 못합니다.

1

첫 번째로, 귀하의 방법은 재귀 적이므로 중단됩니다. 문자를 10 진수 ASCII 코드로 변환하려고한다고 가정합니다. 사용해보기 :

public static int average(char [] letters) 
{ 
    int total = 0; 

    for(int i = 0; i < letters.length; i++){ 
     total += (int)letters[i]; 
    } 

    return total/letters.length; //or cast it back to char if you prefer 
} 
+0

광산 이후로 잘 return 함수 대신 void 함수를 사용하면됩니까? – javip

+0

물론 그렇습니다. 또는 다음과 같이 main 메소드의 값을 출력 할 수 있습니다 (콘솔 프로그램을 사용한다고 가정). System.out.println (average (targetedCharacterArray) + ""); – reederz