Day1-2 for문 + 대소문자 변경

손주완·2026년 6월 20일

문자열을 한 글자씩 꺼내서, 변환한 값을 바로 출력하거나 다시 저장

코드 구조

for (int i = 0; i < a.length(); i++) {
    char ch = a.charAt(i);

    if (Character.isUpperCase(ch)) {
        ch = Character.toLowerCase(ch);
    } else {
        ch = Character.toUpperCase(ch);
    }

    System.out.print(ch);
}

실수했던 부분들

  1. 반복 범위를 20으로 고정함
for (int i = 0; i < 20; i++)

문자열 길이는 매번 다르니까 실제 길이를 써야 했었다.

for (int i = 0; i < a.length(); i++)

charAt(i)는 인덱스가 문자열 길이를 넘어가면 에러가 난다.

  1. 대소문자 변환 방향이 반대였음

문제는:

대문자 -> 소문자
소문자 -> 대문자

그래서:

if (Character.isUpperCase(ch)) {
    ch = Character.toLowerCase(ch);
} else {
    ch = Character.toUpperCase(ch);
}
  1. Character.toLowerCase(ch)가 원본을 바꾸는 줄 알았음

이 코드는 ch를 직접 바꾸지 않는다.

Character.toLowerCase(ch);

변환된 값을 반환만 한다. 그래서 이렇게 써야 한다.

ch = Character.toLowerCase(ch);

또는 바로 출력:

System.out.print(Character.toLowerCase(ch));
  1. 마지막에 원래 문자열 a를 출력함
System.out.println(a);

이러면 변환 결과가 아니라 원래 입력 문자열이 출력된다.
String a 자체는 바뀌지 않았기 때문

포인트

a.length() = 문자열 길이
a.charAt(i) = i번째 문자 꺼내기
Character.isUpperCase(ch) = 대문자인지 확인
Character.toLowerCase(ch) = 소문자로 바꾼 값을 반환
Character.toUpperCase(ch) = 대문자로 바꾼 값을 반환
변환 함수는 원본을 바꾸지 않는다.
변환된 결과를 변수에 저장하거나 바로 출력해야 한다.

0개의 댓글