문자배열에서 숫자인지 문자인지를 판별할땐 Character.isDigit()
을 사용한다.
toString()
자바에서 객체의 문자열 표현을 반환하는 데 사용된다. 대부분의 클래스는 Object 클래스로부터 상속된 기본 toString() 메서드를 가지고 있으며, 이는 객체의 클래스 이름과 해시 코드 값의 16진수 표현을 반환한다. 그러나 많은 클래스는 이 메서드를 오버라이드하여 객체의 상태나 내용을 의미 있는 문자열로 반환한다.
자바스크립트와 달리! 배열을 문자열로 만들고 싶어 toString() 메서드를 사용하면 그 주소값이 반환되는 원리이다.
따라서 새로 갱신된 문자배열 char[]
를 문자열로 반환하고 싶으면 new String(char[])
로 표현하는게 맞다.
다른 사람 풀이를 보니 삼항연산자로도 내가 원하는 바를 더욱 간단하게 표현할 수 있다는 점을 배웠다.
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
다음의 조건들을 생각하면서 if 문을 구현한다.
1) 0번 인덱스는 무조건 대문자
2) 공백이 있는 경우 그 다음부터 오는 문자는 대문자
3) check가 false인 경우 돌아오는 문자는 소문자
package 프로그래머스;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class JadenCase_문자열_만들기 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
System.out.print(solution(input));
}
public static String solution(String s){
String answer = "";
char[] input = s.toCharArray();
boolean check = true;
for(int i=0; i<input.length; i++){
if(check){
if(!Character.isDigit(input[i])){
input[i] = Character.toUpperCase(input[i]);
check = false;
}else{
check = false;
}
}else{
if(!Character.isDigit(input[i])){
input[i] = Character.toLowerCase(input[i]);
}
}
if(input[i] == ' '){
check = true;
}
}
return new String(input);
}
}
class Solution {
public String solution(String s) {
String answer = "";
String[] sp = s.toLowerCase().split("");
boolean flag = true;
for(String ss : sp) {
answer += flag ? ss.toUpperCase() : ss;
flag = ss.equals(" ") ? true : false;
}
return answer;
}
}