String_대소문자 변환_toCharArray, toUpperCase, ascii
✅ 대문자와 소문자가 섞여있는 문자열을 입력받아 대문자는 소문자로, 소문자는 대문자로 변환하여 출력합니다.
내가 짠 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.example.ct_inflean_2024.String;
import java.util.Scanner;
class Main {
public String solution(String str){
String answer= "";
for(char x: str.toCharArray()){
boolean b= Character.isUpperCase(x);
if( b == true ){
answer += Character.toLowerCase(x);
}else{
answer += Character.toUpperCase(x);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
//⭐️input:
//StuDY
//⭐️output:
//sTUdy
🟢 if boolean
if문 안에는 어짜피 true, false오기 때문에 따로 boolean을 설정해 줄 필요가 없다. solution함수의 if문 개선하기
1
2
3
4
5
6
7
8
9
10
11
12
public String solution(String str){
String answer= "";
for(char x: str.toCharArray()){
if(Character.isUpperCase(x)){
answer += Character.toLowerCase(x);
}else{
answer += Character.toUpperCase(x);
}
}
return answer;
}
🟡 ascii code
ascii code로 해결 65 to 90 for uppercase letters and from 97 to 122 for lowercase letters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String solution(String str){
String answer= "";
for(char x: str.toCharArray()){
if(65 < (int) x && (int) x < 90){
answer += Character.toLowerCase(x);
}else{
answer += Character.toUpperCase(x);
}
}
return answer;
}
🟡 Another Way to solve
lowercase - uppercase = 32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public String solution(String str){
String answer= "";
for(char x: str.toCharArray()){
if(65 <= (int) x && (int) x <= 90){
int num = (int) x + 32;
char c= (char) num;
answer +=c;
}else{
int num = (int) x - 32;
char c= (char) num;
answer +=c;
}
}
return answer;
}
🟢 Better Code
1
2
3
4
5
6
7
8
9
10
11
12
13
public String solution(String str){
String answer= "";
for(char x: str.toCharArray()){
if(65 <= x && x <= 90){
answer += (char) (x + 32);
}else{
answer += (char) (x - 32);
}
}
return answer;
}
🔵 ThingsILearned
✔️ casting
char은 바로 int로 형변환없이 downcast 가능하다. 그래서 위 코드에서 x는 char이지만 바로 숫자끼리 비교할 수 있었다. 하지만 다시 char로 바꿀 때는 (char) (x + 32)
로 만들어서 char로 변환해준다.
This post is licensed under CC BY 4.0 by the author.