보혀니 2021. 10. 15. 12:31

 

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

만약 "0wroi1fjlw2jif3"에서 숫자만 추출하면 0, 1, 2, 3 이고 이것을 자연수로 만들면 123이 됩니다.

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

 

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

 

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

 

 

 

import java.util.Scanner;

public class Main {
	public int solution(String str) {
		int answer =0;
		for(char c : str.toCharArray()) {
			System.out.print(c);  //출력
			
//			아래처럼, 연산을 할 때에는 아스키코드로 연산이 된다.
			if(c>=48 && c<=57) {
				answer = answer *10 + (c-48);
			}
		}
		System.out.println();
		return answer;
	}
	
	public int solution2(String str) {
		String answer = "";
		for(char x : str.toCharArray()) {
			if(Character.isDigit(x)) {
				answer +=x;
			}
		}
		return Integer.parseInt(answer);
	}
//	리턴타입 String이면 결과가 0237이 나오기 때문에
//	리턴타입 int로 바꾸고 리턴할 answer는 int형으로 바꿔주기
	
	
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
//		String str = kb.next();

		System.out.println(T.solution("0fwjklr23fjlw7"));
		System.out.println(T.solution2("0fwjklr23fjlw7"));

	}

}

결과

 

 

char 배열을 출력할 때에는

문자열이 문자로 잘 나왔는데

왜 if조건문에서 아스키코드가 되어버린건지 의문이었음

연산할 때에는 아스키코드로 연산이 된다고 함