상세 컨텐츠

본문 제목

[Java] 연습문제2 - ASCII코드 대소문자 상호 변환

Java/제로베이스

by Gopythor 2023. 1. 7. 05:35

본문

728x90
반응형

Practice2

문제 설명

아스키 코드는 미국정보교환표준부호를 의미한다.

영어로 American Standard Code for Information Interchange 이며, 줄여서 ASCII 라고 한다.

문자를 사용하는 대부분의 장치에서 사용하며 문자 인코딩 방식에 아스키를 기초로 두고 있다.

다음은 아스키의 특징이다.

  • 7비트로 구성
  • 총 128개의 문자로 구성 (출력 불가능한 제어문자 33개, 출력 가능한 문자 95개)
  • 출력 가능한 문자들은 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 1개의 공백 문자로 이루어진다.

이번 문제에서는 아스키 코드 중 알파벳에 대해서,
사용자가 입력한 알파벳의 대소문자를 변경하는 프로그램을 작성하시오.

입출력 예시

입력결과

a A
b B
C c
D d

 

모범답안

public class Practice2 {
    public static void solution() {
        Scanner sc = new Scanner(System.in);
        System.out.print("알파벳 입력: ");
        char input = sc.nextLine().charAt(0);
        int output = 0;

        int step = (int)'a' - (int)'A';

        if (input >= 'a' && input <= 'z'){
            output = (int)input - step;
            System.out.println("대문자 변환: " + (char)output);
        } else if (input >= 'A' && input <= 'Z') {
            output = (int)input + step;
            System.out.println("소문자 변환: " + (char)output);
        } else {
            System.out.println("입력하신 값이 알파벳이 아닙니다. ");
        }

    }
  • 입력값, 출력값 변수를 따로 선언
  • step은 a와 A의 차이 값을 가진다.
  • if문에서는 소문자, 대문자 범위를 지정해주어서 그 이외에는 알파벳이 아님을 출력한다.

내코드

class noAlphabet extends RuntimeException{
}

public class Practice2 {
    public static void solution() {
        int cor = 'a'-'A';
        System.out.print("대/소문자 상호 변환: ");
        Scanner sc = new Scanner(System.in);
        char input = sc.next().charAt(0);
        if (input <'A' || input > 'z'){
            System.out.println("영문 입력 해주세요");
            throw new noAlphabet();
        } else if (input <='Z'){
            input += cor;
        } else {
            input -= cor;
        }
        System.out.print(input);
    }
  • 알파벳이 아니라는 RuntimeExeption noAlphabet 선언
  • cor은 소문자에서 대문자 차이 값을 가짐
  • 맨 처음 알파벳 범위임을 검사하고, 
  • 두번째로 Z보다 작은지 검사여부로 대 소문자를 나눈다.
728x90
반응형

관련글 더보기

댓글 영역