[Java] char형의 값이 0인지 확인할 때 (char형을 정수값과 비교할 때)

dani·2025년 6월 5일

Java

목록 보기
4/9

작성일: 2023.6.5

char형의 문자와 0 비교하기

char형의 값이 0인지 확인하는 것을 알아보고자 한다. 이는 단순히 생각하는 것처럼 '비교할 문자' != 0 과 같이 할 수 없는 것이 우리가 생각하는 '0'은 정수형의 값이고 비교할 문자는 char형이기 때문이다.

알고리즘 문제 풀이를 하다가 이 문제를 마주쳤다.

프로그래머스의 369 문제를 푸는데 char의 값이 0이 아니면서 + 3으로 나눈 나머지가 0이면 => 3,6,9에 해당한다 의 로직으로 코드를 짰는데 원하는대로 실행이 되지 않았다.

초기코드

    int num = 2346809;
    int answer = 0;
    String str  = Integer.toString(num);

    for (int i=0;i<str.length();i++) {
       if((str.charAt(i)!=0) && (str.charAt(i) % 3 == 0)){
           System.out.println("str.charAt(i) = " + str.charAt(i));
           answer++;
           
       }
    }
    System.out.println(answer); //확인용

if문이 문제였다. 분명 if((str.charAt(i)!=0) 의 조건을 넣었는데 왜 아래처럼 0도 출력이 되는걸까..?

한 글자만 수정하면 되는 문제였다. char형이기 때문에 str.charAt(i)!=0 이렇게 비교를 하는 것은 해당 문자가 0인지가 아닌 ASCII 값이 0인지를 확인하는 것이었다. '0' 문자의 아스키 값은 48이다. 즉 str.charAt(i)!=48 또는 str.charAt(i)!='0'과 같이 비교를 해야한다.


수정코드

    int num = 2346809;
    int answer = 0;
    String str  = Integer.toString(num);

    for (int i=0;i<str.length();i++) {
       if((str.charAt(i)!='0') && (str.charAt(i) % 3 == 0)){ // 수정
           System.out.println("str.charAt(i) = " + str.charAt(i));
           answer++;
           
       }
    }
    System.out.println(answer);

원하는 3,6,9의 값만 출력이 되는 것을 확인할 수 있다.


출처: https://school.programmers.co.kr/learn/courses/30/lessons/120891

profile
개발세포 이야기

0개의 댓글