자바프로그래밍 질문이요 코드좀 알려주세용
설명
StringBuffer클래스를 활용하여 명령처럼 문자열을 수정하라.
아래 실행 예시에서 love!LOVE는 love를 찾아 LOVE로 수정하라는 명령이다.
첫 번째 만난 문자열만 수정한다.
입력
ex)
>>우리는 love Java Programming.
명령: 우리는!We
명령: LOV!사랑
명령: !Java
명령: love!LOVE
명령: 그만
출력
하나의 명령에 하나의 결과를 출력한다.
ex)
We love Java Programming.
찾을 수 없습니다!
잘못된 명령입니다!
We LOVE Java Programming.
종료합니다.
예시 입력 1
>>우리는 love Java Programming. 명령: 우리는!We 명령: LOV!사랑 명령: !Java 명령: love!LOVE 명령: 그만예시 출력 1
We love Java Programming. 찾을 수 없습니다! 잘못된 명령입니다! We LOVE Java Programming. 종료합니다.힌트
StringBuffer의 indexOf()와 replace()메소드 사용
예)
String text = scanner.nextLine(); // 한 라인을 문자열로 읽는다. 문자열 = "우리는 love Java Programming." 가정
StringBuffer sb = new StringBuffer(text);
....
String [] tokens;
//token[0] = "우리는" 이라고 가정
int index = sb.indexOf(tokens[0]);// index = 0, 즉 문자열에서 "우리는"이 시작되는 인덱스 위치,만약에 token[0]의 내용이 sb에 없으면 -1이 반환됨, 즉 index = -1
// tokens[1] = "We" 이라고 가정
sb.replace(index, index+tokens[0].length(), tokens[1]); // index 위치부터 tokens[0] 문자열의 길이만큼을 tokens[1]에 있는 문자열로 변환
<추가 힌트>
String [] tokens = cmd.split("!"); // 문자열이 "우리는!" 인경우에는 tokens.length 는 2임. "!We" 인경우도tokens.length 는 2임.
따라서
if(tokens[0].length() == 0 || tokens[1].length() == 0) {
System.out.println("잘못된 명령입니다!");
소스입니다.
import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(">>"); String text = scanner.nextLine(); StringBuffer sb = new StringBuffer(text); String cmd = null; while (true) { System.out.print("명령: "); cmd = scanner.nextLine(); if ("그만".equals(cmd)) { System.out.println("종료합니다."); break; } String[] tokens = cmd.split("!"); if (tokens.length != 2 || tokens[0].length() == 0 || tokens[1].length() == 0) { System.out.println("잘못된 명령입니다!"); continue; } int index = sb.indexOf(tokens[0]); if (index < 0) { System.out.println("찾을 수 없습니다!"); continue; } sb.replace(index, index + tokens[0].length(), tokens[1]); System.out.println(sb.toString()); } } }