본문 바로가기
JAVA

[JAVA] Character형 숫자, 알파벳인지 확인하기 Character.isDigit/Character.isAlphabetic

by 열정적인 이찬형 2023. 2. 19.

상황

import java.io.*;

public class Main {
    //입력값이 항상 숫자와 알파벳으로 구성된 문자열이 들어온다고 가정!
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        for(int i=0;i<input.length();i++){
            char c = input.charAt(i);
            if(c >= 65)
                System.out.println(c + "는 알파벳입니다.");
            else
                System.out.println(c + "는 숫자입니다.");
        }

    }
}
  • if문 + 아스키 코드를 사용하여 각 char의 문자가 숫자인지 알파벳인지 확인하고 있습니다.
  • 하지만 Character.isDigit/Character.isAlphabetic을 사용하면 더 간결하게 큰 수와 작은 수를 구분할 수 있습니다.

※ 아스키 코드 표

 

ASCII - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문

ko.wikipedia.org

 

아스키 코드 표에서 숫자[48 ~ 57], 소문자 알파벳[97 ~ 122], 대문자 알파벳[65 ~ 90]로 표현됩니다.

항상 숫자와 알파벳만 주어지는 상황일 때 아스키 코드가 65이상이면 항상 알파벳입니다.


사용법

import java.io.*;

public class Main {
    //입력값이 항상 숫자와 알파벳으로 구성된 문자열이 들어온다고 가정!
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        for(int i=0;i<input.length();i++){
            char c = input.charAt(i);
            if(Character.isAlphabetic(c))
                System.out.println(c + "는 알파벳입니다.");
            else if(Character.isDigit(c))
                System.out.println(c + "는 숫자입니다.");
        }
    }
}
  • Character.isDigit(값)은 값이 숫자인지 확인하여 숫자이면 True, 아니면 False를 반환합니다.
  • Character.isAlphabetic값이 알파벳인지 확인하여 숫자이면 True, 아니면 False를 반환합니다.

Character.isDigit()으로 숫자인지 확인한 다음에 Character.getNumericValue()를 통해서 char의 숫자를 아스키 코드가 아닌 그대로 int형으로 형변환을 시킬 수 있습니다.


예제

코드

import java.io.*;

public class Main {
    //입력값이 항상 숫자와 알파벳으로 구성된 문자열이 들어온다고 가정!
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine();
        for(int i=0;i<input.length();i++){
            char c = input.charAt(i);
            if(Character.isAlphabetic(c))
                System.out.println(c + "는 알파벳입니다.");
            else if(Character.isDigit(c)) {
                System.out.println(c + "는 숫자입니다.");
                //Character.getNumericValue 이용하여 아스키 코드값이 아닌 숫자 그대로 int로 형변환
                System.out.println("char " + c + " -> int " + Character.getNumericValue(c) );
            }
        }
    }
}

결과

 
 

 

댓글