String이 공백인 경우에 대한 질문입니다.
조회수 1114회
안녕하세요!
String(변수명 word)을 입력받을 때 공백을 입력한경우, 이 String이 공백인지 아닌지에 따라 true, false를 출력하려고 합니다.
String에 공백인 경우 if(word.equals(" ")) System.out.println("공백"); 에서 분기가 안되는 이유가 무엇인가요?
테스트 해본 소스코드는 아래와 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Demo {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String word = br.readLine().trim();
if(word.equals(" ")) {
System.out.println("공백");
}
else if(word.trim().length()==0) {
System.out.println("트림");
}
else if(word.equals(null)) {
System.out.println("null");
}
else {
System.out.println("문자열: "+word+"문자열 길이:"+word.length());
}
}
}
감사합니다!
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
String word = br.readLine().trim();
에서
trim()
은 공백을 제거하므로 trim 을 제거합니다.String word = br.readLine();
수정후 스페이스 두번넣고 엔터를 치면 공백으로 판단할겁니다.
-
저라면 이렇게 수정하겠습니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Demo { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String word = br.readLine(); //.trim() 을 제거, 아래에서 trim 확인하기 때문에 if(word.isBlank()) { //word 가 white space, tab 등 공백 문자로만 이루어져 있는지 확인하는 메소드 System.out.println("공백"); } else if(word.trim().length() != word.length()) { //앞 뒤 공백을 제거한 것이 원래 문자열 길이와 다르다면 true System.out.println("트림"); } // else if(word.equals(null)) { //이 if 문은 의미가 없습니다. br.readLine()으로 문자열 할당을 했기 때문에 null값인 경우는 없습니다. // System.out.println("null"); // } else { System.out.println("문자열: "+word+"문자열 길이:"+word.length()); } } }
댓글 입력