Post

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.