[Java] 문자열(ex. "123")이 숫자인지 판단하는 코드

호빵·2024년 7월 16일

Java_문제 풀이

목록 보기
6/8

📅 공부 기간 : 07. 16(화)

주민등록번호(ex. 123456-1234567)에서 '-' 앞 뒤가 다 숫자인지 확인하기

1. isNumeric() 메소드 생성

  • '-' 앞과 위에 숫자로만 되어 있는지 체크
private static boolean isNumeric(String id) {
	for(int i=0; i<id.length(); ++i) {
		if(!(id.charAt(i) >= '0' && id.charAt(i) <= '9'))
			return false;
	}
		return true;
}

💡 key point : 문자열로 된 숫자도 코드값을 연산자로 비교 가능 ('0' -> 48, '1' -> 49...)

2. main 함수에서 isNumeric() 메소드 호출

public class JuminValidation {
	public static void main(String[] args) {
    String jumin = "941225-2123456";
    
    String[] str = jumin.split("-");
	if(!(isNumeric(str[0]) && isNumeric(str[1]))) {
		System.out.println("# 잘못된 주민번호입니다. (숫자)");
		System.exit(0);
		}
 	}
}

[번외] 문자열 숫자를 진짜 숫자로 바꾸기

i) 문자열 숫자 하나 (char 타입)

  • '1'-48 => 1
  • '1'-'0' => 1
  • '9'-'0' => 9

    💡 key point : 문자열 숫자 - '0'

ii) 문자열 숫자 둘 이상 (String 타입)

public static void main(String[] args) {
	String n = "123"; // ==> 숫자로 변환 (단, charAt())
		
	int size = n.length();
	int result = 0;

	for (int i = 0; i < size; i++) {
		result = result * 10 + (n.charAt(i) - '0');
		}
		
	System.out.println(result);
	
}

String 타입은 Integer.parseInt(n)로도 int로 변환 가능

profile
인류의 위대한 대화에 참여하기 위해 다양한 언어를 탐구합니다.

0개의 댓글