본문 바로가기
웹 개발/java

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

by dani0312 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

'웹 개발 > java' 카테고리의 다른 글

[java] Map 특징 + 사용법  (0) 2024.02.16
Java #4 상수란?  (2) 2023.11.26
Java #4 변수  (0) 2023.06.01
Java #3 자바 개발순서 (+기초 코딩 용어)  (0) 2023.03.07
Java #2 자바 개발환경 구축하기  (0) 2023.03.07

/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */