[Java] 프로그래머스_대소문자 바꿔서 출력하기

728x90

1) 문제설명

2) 해결방법

이 프로그래머스 문제를 풀어 보았습니다.

이 문제를 풀기 위해선 기본적인 자바 함수를 알고 있어야 합니다.

기본 함수 종류는

1) charAt() -> String을 -> Char로 변환

   - > 이는 현재 문자열에서 특정 인덱스에 위치한 문자를 반환하는 것 입니다.

2) toUpperCase() -> 소문자 -> 대문자로 변환

3) UpperCase() -> 대문자 -> 소문자로 변환

import java.util.Scanner;

public class Solution { 
    public static void main(String[] args) {
    	//Scanner 입력 받음.
        Scanner sc = new Scanner(System.in);
        // 입력받을 저장소인 a를 만들고, 다음으로 넘어갈sc.next만듬
        String a = sc.next(); 
        // 나중에 출력할 변수 answer을 초기화 해둠. 
        String answer = ""; //
		
        //입력 : aBcDeFg
        
        //for문을 통해 입력받은a의 문자열 갯수만큼 돌린다.(7번 돌림)
        for(int i = 0; i< a.length();i++){
        	//c라는 변수에 charAt함수를 통해 한글자 씩 저장한다.
            char c = a.charAt(i); //i=0이니 , c에는 a 가저장됨
            
            //조건문 
            //char타입의 문자를 매개변수로 받아 대문자 판별
            if(Character.isUpperCase(c)){ //방금 c에 저장된 a가 대문자라면  아래 조건
                answer += Character.toLowerCase(c); //소문자 -> 대문자로 변경
            } else{ //방금 c에 저장된 a가 대문자가 아니라면  아래 조건
                answer += Character.toUpperCase(c); //대문자 -> 소문자로 변경
            }
        }
        System.out.println(answer); //누적저장된 answer출력
    }
}

위 코드들을 한줄 씩 리뷰 한 결과 입니다.

-> 저는 헷갈렸던게 if문에서 (char.isUpperCase(c)) 를 사용하려는데 오류가나서 생각을 해보고 좀 찾아보았습니다.

3) 결과

 

char는 문자열 타입이므로 메서드를 호출 할 수없습니다.

기본 타입의 객체를 호출해야하는데 할수 없으므로 기본타입의 객체로 변경을 해주어야 합니다.

그러기 위해선 기본적으로 Wrapper클래스 내용을 알아야 합니다.

기본 타입에 해당하는 데이터들을 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 합니다.

래퍼 클래스는 각각의 타입에 해당하는 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어 줍니다.

출처 : TCP school

그러모르 래퍼클래스인 Character를 사용해서 정적메서드인.uppercase, lowercase를 사용해야 한다는 생각이 들었습니다.

 

String은 문자열 타입이 아닌 클래스 타입으로 이니 객체를 호출할 수 있습니다.int 또한 클래스 타입이아니므로 Integer을 사용하는 것 처럼요.

틀린 내용이 있다면 답글 남겨주세요!! 다시 공부해보겠습니다.

 

그리고 공부할때는 TCP School을 활용했습니다.

링크 : http://www.tcpschool.com/java/java_api_wrapper

프로그래머스 알고리즘내용을 이해하시기 쉽게 글로 써보았습니다

이상입니다.

 

728x90