JAVA(폐쇄)/독학내용

자바(JAVA) charAt(int i)-'0' 는 뭘까?

진사담 2023. 3. 22. 00:07
728x90
반응형

백준 문제

https://hobby-it-learn.tistory.com/24

 

자바(JAVA) 백준 - 2588 (곱셈)

이번 문제는 1, 2를 입력하여 곱셈의 과정인 3, 4, 5 를 보여주고 정답까지 맞추는 프로그램이다. 여기서 모듈러를 사용하였는데 B에 들어오는 입력값을 각 자릿수 별로 얻어와야한다. 일의 자리 5

hobby-it-learn.tistory.com

요놈을 풀다가 다른 사람들은 배열로 풀기에

구경 하다

System.out.println(A * (b[2]-'0'));

-'0'이란 애를 발견했다...

 

이놈은 무엇일까.. 고민을 하고 검색 해본 결과

 

 

CharAt
CharAt 함수 때문이었는데,
이 함수는 문자열에서 index를 통해 특정 위치의 문자를 반환하는 함수이다.
매개변수는 int형으로 받고 리턴값은 char형으로 반환된다.

 

먼저 아스키 코드를 봐야하는데

아스키 코드에서 숫자 0~9까지는 48~57이다.

 

 

CharAt으로 반환받은 '1'은 int형이 아닌 char형, 즉 int로 변환시키면 아스키코드값인 49로 변환되기 때문.

'0'(char) -> 48
'1'(char) -> 49
'2'(char) -> 50
'3'(char) -> 51
'4'(char) -> 52

따라서 (int) num.charAt(0) + (int) num.charAt(1) 의 값은 99으로 출력된다.

이 때 -'0'(48)을 해주면

48 - 48('0') = 0
49 - 48('0') = 1
50 - 48('0') = 2
51 - 48('0') = 3
52 - 48('0') = 4

CharAt(int i) - '0'을 통해 char형의 문자들을 int형으로 변환시킬 수 있다.

728x90
반응형