본문으로 바로가기

[JAVA]String09.숫자만 추출

category 코딩테스트/basic 2022. 5. 18. 16:35

설명

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다.

만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.

추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

입력

첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다.

 

출력

첫 줄에 자연수를 출력합니다.

풀이1

import java.util.Scanner;
class Main {
	
	public int solution(String str) {

		int answer = 0;
		
		//문자 0 = 48, 9 = 57
		//x >= 48 && x <= 57 
		for(char x : str.toCharArray()) {
			if(x >= 48 && x <= 57) {
				answer = answer*10 + (x-48);
			}
		}
		
		return answer;
 
	}

	public static void main(String[] args){
		Main t = new Main();
		Scanner sc = new Scanner(System.in);
		String str =  sc.nextLine();
		System.out.println(t.solution(str));
	}
}
 

● 아스키 코드 문자(Char)

- x >= 48 && x <= 57 이면 숫자. 외워두기!

 

풀이2

import java.util.Scanner;
class Main {
	
	public int solution(String str) {

		String answer = "";
		
		for(char x : str.toCharArray()) {
			
			if(Character.isDigit(x)) {
				answer+=x;
			}
		
		return Integer.parseInt(answer);
 
	}
}
	public static void main(String[] args){
		Main t = new Main();
		Scanner sc = new Scanner(System.in);
		String str =  sc.nextLine();
		System.out.println(t.solution(str));
	}
}
 

Character.isDigit() : char값이 숫자인지 여부를 판단하여 true/false 리턴

주의! '97' 입력시 true, 97 입력시 false

<- > Character.isLetter() : char 값이 문자 인지 여부 판단 true/false 리턴