자바 삼항 연산자를 이용하여 대문자 소문자 숫자 구분, 대소문자를 변경하는 방법
오늘 수업을 받았던 내용 중에서 나름대로 중요하다고 생각이 되어서 글을 작성하게 되었습니다. 프로그래밍 연산자 중에서 삼항 연산자를 이용하여 변수에 담긴 값이 대문자인지 소문자인지 숫자인지를 구분하는 방법과 변수에 담긴 영문 글자가 소문자일 경우는 대문자로 대문자일 경우는 소문자로 변경하여 출력하는 프로그램 코드에 대해서 작성해 보려고 합니다.
처음 어떻게 코드를 작성할까 고민을 했었을 때는 아스키 코드값의 숫자 밖에 생각이 나지 않더군요. 숫자의 차이를 이용해서 소문자와 대문자의 아스키코드 숫자 값을 확인하여 아스키코드값의 숫자 차이를 이용하여 변수에 담긴 숫자를 삼항 연산자로 비교하여 처리하려고 하였습니다.
물론 그렇게 해서 진행했어도 되지만 더 간단한 방법이 있었습니다. 컴퓨터 내부에서 캐릭터로 선언된 한 글자의 경우는 숫자로 인식이 가능하기 때문에 굳이 숫자로 변경하지 않고 캐릭터 타입의 문자 자체를 비교하고 그 비교한 값을 변수에 대입하면 간단히 구분할 수 있었습니다.
실제 아스키코드표는 아래와 같으며 소문자 a는 97 대문자 A는 65해당 숫자의 차이는 32입니다.
원래는 이 숫자들을 이용하여 대소문자를 구분하려 하였고 실제 아스키코드표에 대문자 소문자 숫자의 시작 숫자를 확인한 후 비교하여 진행하려고 하였습니다.
실제 소스코드는 아래와 같습니다. 사용언어는 자바이지만 대부분 다른 언어에서 사용하는 방법과 큰 차이는 없는 것 같습니다.
public class Check {
public static void main(String[] args) {
//변수에 특정 글자를 입력 한다. 이변수는 대소문자 숫자로 변경하며 정상적으로 출력 되는지 확인한다.
char ch = 'F';
//str이라는 변수에는 실제 변수를 비교한 결과 값을 출력하는 변수라고 생각한다.
String str = "";
//캐릭터 형태로 선언된 변수의 경우는 컴퓨터 내부에서 숫자로 인식가능!
//삼항연산자를 이용하여 a~z안에 포함 된다면 소문자라는 글자를 str 변수에 넣는다. 소문자 a는 97로 시작 소문자 z는 122까지 인식된다.
str = ch>='a' && ch <= 'z' ? "소문자" : str;
//삼항연산자를 이용하여 대문자 A~Z에 포함된다면 대문자라는 글자를 str 변수에 넣는다. 대문자 A는 65로 시작 대문자 Z는 90까지
str = ch>='A' && ch <= 'Z' ? "대문자" : str;
//ch값이 0~9에 포함 된다면 숫자라는 글자를 str 변수에 넣어준다. 아스키 코드값에 의하면 숫자 0은 48 숫자 10은 89이다.
str = ch>='0' && ch <='9' ? "숫자" : str;
//변수에 담긴 글자가 소문자/대문자/숫자인지 확인 출력문
System.out.printf("현재 변수에 들어간 문자는 %c이며 현재 입력된 글자는 %s 입니다. \n", ch, str);
//입력된 글자의 소문자를 대문자로 대문자를 소문자로 변경하기 위해서 변수 선언
char ch2 =ch;
//소문자 대문자 변경 a~z에 포함이 된다면 ch변수에 a-A 한값을 넣어주면 되는데 결국엔 'a' - 'A'는 컴퓨터에서는 숫자로 인식 하기 때문에 아스키 코드값을 보지 않아도 대문자로 변경이 가능 합니다.
'a' - 'A' 대신 -32를 입력하여도 결과는 같습니다. 결국 아스키 코드값을 보면서 굳이 숫자 차이를 확인하여 구분하지 않아도 간단히 표현이 가능하다는 얘기입니다.
ch2 = (ch >= 'a' && ch <= 'z') ? (char)(ch-('a'-'A')):ch2;
ch2 = (ch >= 'A' && ch <= 'Z') ? (char)(ch+('a'-'A')):ch2;
System.out.printf("현재 변수에 들어간 문자는 %c이며 대소문자로 변경된 변수의 출력 결과는 %c 입니다.\n", ch,ch2);
}
}
실제 출력 결과는 아래 이미지와 같으며 ch 변수에 숫자 대문자 소문자를 변경하여 테스트해보면 변수에 입력된 값이 어떤 값인지 출력 결과로 간단히 구분이 가능합니다.
컴퓨터에서 인식하는 것과 사람이 인식하는 차이 때문에 조금 헷갈렸었는데 나름대로 삼항 연산자를 이용해서 대문자, 소문자, 숫자 구분 대소문자 변경하여 출력하는 방법에 대해서 작성해 보았습니다.
물론 함수를 이용하거나 더 간단하고 다양한 방법으로도 코딩 할 수 있지만, 캐릭터 타입과 변수, 삼항연산자를 이용하여 변수에 있는 값을 구분하는 코드를 정리해 보았습니다. 필요하신 분들이 있다면 참고하시면 좋을 것 같습니다.