숫자 또는 문자만 추출 하는법(Character) + 아스키코드 표

Lee kyu min·2024년 2월 29일

Java study

목록 보기
38/41

1. Character.isDigit(char ch)

* 명시된 char값이 숫자면 true, 아니면 false

ex)

System.out.println(Character.isDigit('1'));		//true
System.out.println(Character.isDigit('a'));		//false
System.out.println(Character.isDigit(97));		//false

2. Character.isAlphabet(char ch)

* 명시된 char값이 문자면 true 아니면 false

ex)

System.out.println(Character.isAlphabetic('a'));	//ture
System.out.println(Character.isAlphabetic('!'));	//false
System.out.println(Character.isAlphabetic('ㄱ'));	//true
System.out.println(Character.isAlphabetic('7'));	//false
System.out.println(Character.isAlphabetic(7));	//false

3. Character.forDigit(int A, int B)

* A를 B진법으로 바꾸는 함수

  • 36진법 이하 10이상의 숫자는 a~z로 나타남(a=10, ... ,z=35)
  • B가 37이상이거나 A>B이면 글자가 깨짐
    ex)
System.out.println(Character.forDigit(9, 10));
System.out.println(Character.forDigit(35, 36));
System.out.println(Character.forDigit(1, 37));
System.out.println(Character.forDigit(11, 10));
  • 출력

  • 아스키코드 표

4. Character.getNumericValue(char ch)

  • 숫자형태의 char을 int로 변환

예시문제들

ex) 백준 2745번

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;


public class Main {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String[] str = br.readLine().split(" ");
		int B = Integer.parseInt(str[1]);
		String N = str[0];
		
		bw.write(String.valueOf(conversion(N, B)));
		bw.close();
	}
	private static int conversion(String N, int B) {
		int result =0;
			for (int i = 0; i < N.length(); i++) {
				if (Character.isDigit(N.charAt(i))) {
					result += (N.charAt(i)-48)*Math.pow(B, N.length()-i-1);
				} else {
					result += (N.charAt(i)-55)*Math.pow(B, N.length()-i-1);
				}
			}
		return result;
	}
}

ex) 백준 11005번

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;


public class Main {

    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        String[] str = br.readLine().split(" ");
        int B = Integer.parseInt(str[1]);
        int N = Integer.parseInt(str[0]);
        
        bw.write(conversion(N, B));
        bw.close();
    }
    
    private static String conversion(int N, int B) {
        List<Integer> list = new ArrayList<>();
        int i = 0;
        while (N > 0) {
            list.add(N % B);
            N = N / B;
            i++;
        }
        StringBuilder result = new StringBuilder();
        for (int j = list.size() - 1; j >= 0; j--) {
            if (list.get(j) < 10) {
                result.append(list.get(j));
            } else {
                result.append(Character.forDigit(list.get(j), B));
            }
        }
        return result.toString().toUpperCase();
    }
}

0개의 댓글