JOO's note

charAt(i)와 char의 문자코드값 본문

Back-End/알고리즘

charAt(i)와 char의 문자코드값

pli3452 2015. 1. 8. 12:06

[4-9] 숫자로 이루어진 문자열 str이 있을 때, 각 자리의 합을 더한 결과를 출력하는 코

드를 완성하라. 만일 문자열이 "12345"라면, ‘1+2+3+4+5’의 결과인 15를 출력이 출력되

어야 한다. (1)에 알맞은 코드를 넣으시오.

[Hint] String클래스의 charAt(int i)을 사용

[연습문제]/ch4/Exercise4_9.java

class Exercise4_9 {

public static void main(String[] args) {

String str = "12345";

int sum = 0;

for(int i=0; i < str.length(); i++) {


// (1) 로직작성


}

System.out.println("sum="+sum);

}

}













[정답] sum += str.charAt(i) - '0';

[해설] charAt(int i)메서드는 문자열에서 i번째 문자를 반환한다.(i의 값은 0부터 시작

한다.) 예를 들어, "Hello"라는 문자열이 있을 때 "Hello".charAt(4)는 문자 'o'가 된다.

index 0 1 2 3 4

char H e l l o

charAt(int i)을 이용해서 반복문으로 각 문자열의 문자를 하나씩 읽어서 숫자로 변환한

다음 sum에 계속 더하면 된다. 문자'3'을 숫자 3로 바꾸는 방법은 문자'3'에서 문자'0'을

빼주는 것이다. 알파벳이나 숫자는 문자코드가 연속적으로 할당되었기 때문에 이런 방법

이 가능하다.

문자 문자코드

... ...

‘0’ 48

‘1’ 49

‘2’ 50

‘3’ 51

... ...

뺄셈과 같은 이항연산자는 int타입보다 작은 타입은 피연산자(byte, short, char)은 int

로 변환한다. 그래서 '3'-'0'은 51 - 48으로 변환되고 그 결과는 숫자 3이 된다.

'3'-'0' → 51 - 48 → 3

[실행결과]

15

'Back-End > 알고리즘' 카테고리의 다른 글

회문수(palindrome)  (0) 2015.01.08
문자열이 숫자인지 판별  (0) 2015.01.08
피보나치수열  (0) 2015.01.08
문자열이 아닌 숫자에서 각자리의 숫자 뽑아오기  (0) 2015.01.08
for문 > while문으로  (0) 2015.01.08
Comments