자바에서 시작문자로 시작되는 경우를 체크하거나
끝문자로 끝나는 경우를 확인해야 하는 경우가 생겼습니다.
아래 예시처럼 무한반복 루프에서 탈출하기 위한 조건으로
특정 문자로 시작하거나(quit) 특정 문자로 끝날 때(mon) 반복을 종료시키는 소스를 만들었습니다.
유용하게 사용가능한 String method인
String.startsWith()
String.endsWith()
를 사용할 수 있습니다.(아래 예제에서 .equals("quit\n") 해도 될거같긴 합니다.)
public static void main(String[] args) throws Exception {
InputStream is = System.in;
Reader reader = new InputStreamReader(is);
int readCharNo;
char[] cbuf = new char[100]; // Reader를 쓰기에, byte 배열이 아닌 char배열로 읽어들인다..
// 입력 종료하려면 ctrl+z 눌러서 read가 -1이 되도록 하라는데, intellij 에선 안된다.
while ((readCharNo=reader.read(cbuf)) != -1) {
String data = new String(cbuf, 0, readCharNo);
if (data.equals("quit")) break; // 반복탈출 실패, 이게 엔터쳐서 받는거다보니깐, 개행문자도 하나의 문자로 치다보니깐 빈값으로 인식이 안되는 것 같다.
if (data.startsWith("quit") && data.length()==5) break; // 반복탈출 성공
if (data.endsWith("mon\n")) break; // 반복탈출 성공
System.out.print(data.length()+" "); //
System.out.print(data);
}
// 무한반복인데...
reader.close();
is.close();
'IT기술 > JAVA' 카테고리의 다른 글
[JAVA] 객체지향 설계 5원칙 SOLID 원칙 (0) | 2024.02.08 |
---|---|
[java] assert 개발 테스트 에서 조건 걸기 (0) | 2024.02.03 |
[Java] null 에 대한 검증, 처리방법 (0) | 2024.01.14 |
[Java] 자바에서 싱글톤 패턴 이해하기 (0) | 2024.01.13 |
[Java] Optional 소개 (0) | 2024.01.13 |