대소문자 변환
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로
변환하여 출력하는 프로그램을 작성하세요.
▣ 입력설명
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
▣ 출력설명
첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.
▣ 입력예제 1
StuDY
▣ 출력예제 1
sTUdy
나의 풀이
import java.util.*;
class Main {
public String solution(String str) {
char[] charArray = str.toCharArray(); //반환타입이 char타입이다.
String answer = "";
for (int i = 0; i < charArray.length; i++) {
if (Character.isUpperCase(charArray[i])) {
answer += Character.toLowerCase(charArray[i]);
} else if (Character.isLowerCase(charArray[i])) {
answer += Character.toUpperCase(charArray[i]);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next(); //next(): String형태의 문자열을 읽는다.
System.out.print(T.solution(str));
}
}
▶ str.toCharArray() : 반환타입이 "char타입 배열" 이라는 사실을 잊지 말자
▶ char 타입을 변수 char x에 담을 수도 있고, char[ ] 배열에 담을 수도 있다.
▶ Character.toUpperCase(t) : 대문자로 바꾼다.
▶ Character.toLowerCase(t) : 소문자로 바꾼다.
▶ Character.isUpperCase(t) : 대문자인지 판단 반환타입: true or false
▶ Character.isLowerCase(t) : 소문자인가 판단 반환타입: true or false
강사풀이1
import java.util.*;
class Main {
public String solution(String str){
String answer="";
for(char x : str.toCharArray()){
if(Character.isLowerCase(x)) answer+=Character.toUpperCase(x);
else answer+=Character.toLowerCase(x);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.print(T.solution(str));
}
}
▶ for (char x : str.toCharArray() )
▶ for (반환타입을 저장할 변수 : 배열, 리스트. set ... 등 )
▶ for each문은 파이썬의 for문과 비슷한다. (인덱스 없이 0에서 부터 끝까지 자동으로 움직인다.)
강사풀이2
import java.util.*;
class Main {
public String solution(String str){
String answer="";
for(char x : str.toCharArray()){
if(x>=97 && x<=122) answer+=(char)(x-32);
else answer+=(char)(x+32);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.print(T.solution(str));
}
}
▶ 아스키코드
A ~ Z
65 90
a ~z
97 122
▶ if(x>=65 && x<=90) answer+=(char)(x+32);
→대문자라면 소문자로 바꾸고
▶ else answer+=(char)(x-32)
→소문자라면 대문자로 바뀌라
'자바 알고리즘 > String(문자열)' 카테고리의 다른 글
3. 문장 속 단어( split(), indexOf(), substring() ) (0) | 2022.11.16 |
---|---|
1. 문자 찾기 (0) | 2022.11.16 |