char 혹은 String 배열에서는 숫자도 문자형식으로 저장이 된다. 이 경우에 배열 안의 값이 숫자와 문자를 판별해야 할때 사용하는 방식이 있다.
(보통 프로그래머스 문제를 풀면 문자열에서 숫자를 찾아 값을 모두 더해 반환해라 라는 문제가 나오는데 그때 사용할 수 있는 메소드이다.)
형식 ) Character.isDigit(문자)
만약 해당 문자의 값이 숫자라면 true 를 반환하고,문자라면 false를 반환한다.
예를 들면,
예시1)
System.out.println(Character.isDigit('A'));
이때는 a가 문자이기 때문에 false가 반환된다.
예시2)
System.out.println(Character.isDigit('107'));
이때는 107이 숫자이기 때문에 true가 반환된다. 중요한것은 ( ) 안에는 문자만 써야하기 때문에 숫자 바깥에 ' ' 를 꼭 사용해 줘야 한다는 것이다.
만약 사용하지 않았다면 어떻게 될까. 예시 3번을 보자.
예시3)
System.out.println(Character.isDigit(107));
' ' 기호를 사용하지 않았을때의 결과는 ture가 아닌 false로 반환된다.
그 이유는 문자가 아니기 때문에 107은 int codepoint로 인식이 되어 유니코드로 변환되어 반환하기 때문이다. 따라서 107의 결과값이 아니라 유니코드 코드 포인트가 107인 문자값을 상대로 반환된다. 107의 유니코드는 ' k ' 이다.
그렇다면, 만약 바로 문자값을 집어넣지 않고 배열 안의 값이 문자인지 숫자인지 판별하려는 경우에는 어떻게 할까?
아래와 같이 하면 된다.
아래 코드는 [Lv.0 - Java] 120851. 숨어있는 숫자의 덧셈 (1) 문제의 풀이코드이다.
class Solution {
public int solution(String my_string) {
int answer = 0;
char[] str = my_string.toCharArray();
for(int i=0; i<str.length; i++){
if(Character.isDigit(str[i])){
answer += Character.getNumericValue(str[i]);
}
}
return answer;
}
}
'Language > Java' 카테고리의 다른 글
[Java] JDBC와 Connection poll (1) | 2023.11.14 |
---|---|
[Java] equals() 메소드와 == 연산자의 차이 (1) | 2023.11.11 |
[Java] 스트림 요소를 하나의 문자열로 결합 / Collectors.joining() (0) | 2023.11.06 |
[Java] 접두사, 접미사인지 확인 / startsWith(), endsWith() (0) | 2023.11.05 |
[Java] 문자열을 숫자로 변환 / Integer.parseInt(), Interger.valueOf() (0) | 2023.11.04 |