메서드 .charAt(int position)
은 숫자 문자열에서 단일 문자를 반환합니다. 문자열에 숫자가 포함되어 있으므로 숫자 (0 - 9
)가 포함 된 문자가 전송됩니다. 다음 단계는이 문자를 int로 변환하는 것입니다.
순진 솔루션은 다음과 같습니다
char digit = number.charAt(i);
if (digit == '0') {
num += 0;
} else if (digit == '1') {
num += 1;
}
그러나 우리는이 문제를 단순화하기 위해 문자의 ASCII 값을 사용할 수 있습니다. this ASCII table ('Dec'및 'Chr'열만)을 살펴보십시오.
int num = digit - 48;
이 훨씬 더 직접적으로 될 것입니다 문자를 배치하여 단순화 할 수있다 : 당신은 문자 0
사실 우리는 우리의 문자 48 우리가 올바른 값을 검색 빼지 그렇다면 (48)의 값을 갖는 것을 볼 수 있습니다 컴파일러에 의해 대체 :
int num = digit - '0';
예 : '4'
가 52
의 ASCII 값이
캐릭터. 우리가 48
을 빼면 우리는 원하는 결과 인 4를 얻습니다.
ASCII 코드와 관련이 있습니까? – Max
왜냐하면'char'는 정말로 다른 방식으로 해석되는'short'입니다. 그래서 어떤 식 으로든, "distance from" '0'을 계산할 것입니다. " – awksp
이 예제를보십시오 :'int i = 'F'- 'A';'F'와'A'의 값은 얼마입니까? 예를 들어''3 ''의 가치는 무엇입니까? (힌트 : 3이 아닙니다.) –