문자열이 주어졌을 때, 대문자는 소문자로, 소문자는 대문자로 변환하는 문제이다.
문자열의 각 문자를 하나씩 확인하면서,
해당 문자가 대문자인지 소문자인지 판별한 후 변환하면 된다.
자바에서는 문자열을 바로 수정할 수 없기 때문에,
toCharArray()를 사용해 char 배열로 변환한 뒤 처리했다.
'a'(97) ~ 'z'(122)'A'(65) ~ 'Z'(90)👉 아스키 코드 기준으로
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
char[] res = a.toCharArray();
for (int i = 0; i < a.length(); i++) {
if (97 <= res[i] && res[i] <= 122) {
res[i] = (char)(res[i] - 32);
} else if (65 <= res[i] && res[i] <= 90) {
res[i] = (char)(res[i] + 32);
}
}
System.out.println(new String(res));
}
}
char[]로 변환 후 처리해야 한다System.out.println(res)도 가능하지만new String(res)로 명확하게 변환하는 것이 좋다자바에서 제공하는 메서드를 활용하면 더 간단하게도 풀 수 있다.
for (char c : a.toCharArray()) {
if (Character.isLowerCase(c)) {
System.out.print(Character.toUpperCase(c));
} else {
System.out.print(Character.toLowerCase(c));
}
}
👉 가독성이 더 좋은 코드라고 한다.
char 단위로 접근하는 연습에 적합