문제
입력
출력
예시
//입력
as0d213RT@#$
//출력
213
코드
class Main {
// 숫자와 문자가 섞인 String을 전달 받아
// 아스키 넘버를 통해 숫자인지 확인하여 숫자면
answer에 추가하여 리턴
// 예를들어 전달 받은 String의 첫번째 숫자가 0이면
x가 48이 되니까 answer도 0이 들어가고
두번째 숫자가 1이면 x는 49니까 answer에는 1이 들어가게되고
세번째 숫자가 2면 이제 기존에 answer에 1이 들어가 있으니까
1*10 + (50-48) 해서 answer에 12가 들어가게 된다.
즉 10을 곱해서 1의 자리를 0으로 만들고 숫자를 추가해 나가는 것.
public static int solution(String str) {
int answer = 0;
for (char x : str.toCharArray()) {
if (x >=48 && x<=57) {
answer = answer*10 + (x-48);
}
}
return answer;
};
public static void main(String[] args) {
// 스캐너 객체를 생성 한다.
Scanner input = new Scanner(System.in);
// 문자를 입력 받아 solution 메서드에 전달
String str = input.next();
System.out.println(solution(str));
}
}
class Main {
// Character.isDigit을 사용하여 숫자인지 확인하여 숫자를
answer에 담는다.
// 이렇게 하면 첫 숫자가 0이어도 0이 담기므로 마지막에
int형으로 변환하여 첫번째 숫자가 0인 경우 0을 제거한다.
public static 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) {
// 스캐너 객체를 생성 한다.
Scanner input = new Scanner(System.in);
// 문자를 입력 받아 solution 메서드에 전달
String str = input.next();
System.out.println(solution(str));
}
}
사용한 메서드
Character.isDigit ( )
System.out.println(Character.isDigit('a')); // false
System.out.println(Character.isDigit('0')); // true
Integer.parseInt ()
String strNum1 = new String("1234");
String strNum2 = new String("4321");
int num1 = Integer.parseInt(strNum1);
int num2 = Integer.parseInt(strNum2);
System.out.println(num1 + num2); // 12344321이 아닌 5555가 출력됨