공부했던 자료 정리하는 용도입니다.
재배포, 수정하지 마세요.
입력받은 문자열중 대문자는 소문자로, 소문자는 대문자로 변환하기
ASCII코드표에서 소문자 97 ~ 122 와 대문자 65 ~ 90 가 32 만큼 차이가 나는 것(숫자는 48 ~ 57 ) 이용한다. Scanner 로 문자열을 입력받고 tmp 에 한 글자씩 담아서 검사한다. 검사한 결과가 대문자면 소문자로, 소문자면 대문자로 바꾼다. 관련된 내장 함수에는 toUpperCase( ) 와 toLowerCase( )가 있다.
toUpperCase( ) : 문자열을 모두 대문자로 변환해준다.
toLowerCase( ) : 문자열을 모두 소문자로 변환해준다.
1. 내장 함수 사용하지 않는 경우
대문자에서 32 를 더하면 소문자가 되고, 소문자에서 32 를 빼면 대문자가 되는 것을 이용한다.
package test;
import java.util.*;
class test{
public static void main(String[] args) {
String input = ""; //입력받은 문자열을 저장할 input 선언
String output = ""; //최종적으로 출력할 문자열을 저장하는 output 선언
int tmp;
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요 : ");
input = scanner.nextLine(); //입력받은 문자열을 input에 저장
for(int i = 0 ; i < input.length() ; i++) { //문자열을 검사하기 위해서 input의 길이만큼 반복문 실행(한글자씩 tmp에 옮겨서 검사)
tmp = (int)input.charAt(i); //문자열은 아스키코드(숫자)로 저장되기 때문에 int형으로 변환.
if( (65 <= tmp) && (tmp <= 90) ) { //문자가 65 <= tmp <= 90인 경우 (대문자인 경우)
output += (char)(tmp + 32); //32를 더해서 소문자로 변환
}else if( (97 <= tmp) && (tmp <= 122)) { //문자가 97 <= tmp <= 122인 경우 (소문자인 경우)
output += (char)(tmp - 32); //32를 빼서 대문자로 변환
}else { //그 외의 문자열인 경우
output += (char)tmp; //그대로 출력
}
}
System.out.println("변환된 문자열 : " + output); // 최종적으로 변환한 글자열인 output을 출력
}
}
2. 내장함수 사용하는 경우(toUpperCase( ), toLowerCase( ))
두 함수는 문자열 전체를 일괄적으로 바꿔주기 때문에 한 글자씩 변환해서 바꿔야 각각의 글자를 다르게 바꿀 수 있다. 첫 번째 방법과 비슷하지만 tmp 의 자료형을 int 형에서 char 형으로 바꿨다.
package test;
import java.util.*;
class test{
public static void main(String[] args) {
String input = ""; //입력받은 문자열을 저장할 input 선언
String output = ""; //최종적으로 출력할 문자열을 저장하는 output 선언
char tmp;
Scanner scanner = new Scanner(System.in);
System.out.print("문자열을 입력하세요 : ");
input = scanner.nextLine(); //입력받은 문자열을 input에 저장
for(int i = 0 ; i < input.length() ; i++) { //문자열을 검사하기 위해서 input의 길이만큼 반복문 실행(한글자씩 tmp에 옮겨서 검사)
tmp = input.charAt(i); //문자열을 한글자씩 tmp에 넣는다.
if( (65 <= tmp) && (tmp <= 90) ) { //문자가 65 <= tmp <= 90인 경우 (대문자인 경우)
output += input.valueOf(tmp).toLowerCase(); //내장함수를 이용해서 소문자로 변환
}else if( (97 <= tmp) && (tmp <= 122)) { //문자가 97 <= tmp <= 122인 경우 (소문자인 경우)
output += input.valueOf(tmp).toUpperCase(); //내장함수를 이용해서 대문자로 변환
}else { //그 외의 문자열인 경우
output += (char)tmp; //그대로 넣는다.
}
}
System.out.println("변환된 문자열 : " + output); // 최종적으로 변환한 글자열인 output을 출력
}
}
'Back end > Java 문제' 카테고리의 다른 글
[Java] 문자열이 숫자인지 판별 (isDigit()) (0) | 2019.06.14 |
---|---|
[Java] 구구단 (0) | 2019.06.13 |
[Java] 문자열/숫자의 자리합 더하기 (2) | 2019.06.09 |
[Java] Math.random()을 활용한 로또번호 뽑기 (0) | 2019.06.07 |
[Java] 1부터 n까지의 정수 중에서 2 or 3의 배수가 아닌 수의 총합 구하기 (0) | 2019.05.29 |