우당탕탕 개발일지
8일차_과제 본문
1. 치환하는 프로그램을 작성하시오 - indexOf(?, ?), replace()
String 클래스의 메소드를 이용하시오
대소문자 상관없이 개수를 계산하시오
[실행결과]
문자열 입력 : aabba
현재 문자열 입력 : aa
바꿀 문자열 입력 : dd
ddbba
1번 치환
문자열 입력 : aAbbA
현재 문자열 입력 : aa
바꿀 문자열 입력 : dd
ddbba
1번 치환
문자열 입력 : aabbaa
현재 문자열 입력 : aa
바꿀 문자열 입력 : dd
ddbbdd
2번 치환
문자열 입력 : AAccaabbaaaaatt
현재 문자열 입력 : aa
바꿀 문자열 입력 : dd
ddccddbbddddatt
4개 치환
문자열 입력 : aabb
현재 문자열 입력 : aaaaa
바꿀 문자열 입력 : ddddd
입력한 문자열의 크기가 작습니다
치환 할 수 없습니다
코드
package homework2;
import java.util.Scanner;
public class StringReplace {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int i=0; i<5; i++) {
int count = 0; // 치환 횟수
System.out.print("문자열 입력 : ");
String input = sc.next();
input = input.toLowerCase();
System.out.print("현재 문자열 입력 : ");
String currentStr = sc.next();
currentStr.toLowerCase();
System.out.print("바꿀 문자열 입력 : ");
String replaceStr = sc.next();
replaceStr.toLowerCase();
if(input.length() < currentStr.length()) {
System.out.println("입력한 문자열의 크기가 작습니다.\n"
+ "치환 할 수 없습니다");
}else {
for(int j=0; j<input.length(); j++) {
int num = input.indexOf(currentStr, j);
if(num != -1) {
j = num + currentStr.length();
count++;
}
}
System.out.println(input.replace(currentStr, replaceStr) + "\n" + count + "개 치환");
}
}
}
}
2. 성적 처리 프로그램
1. 사지선다형 5문제 제공
2. 정답은 "11111"
클래스명 : Exam
* 필드
private String name = null;
private String dap = null;
private char[] ox = null;
private int score = 0;
private final String JUNG = "11111"; //상수화
* 메소드
생성자 - Scanner 써서 이름, 답을 입력 받는다.
compare() - 비교
getName()
getOx()
getScore()
클래스명 : ExamMain
[실행결과]
인원수 입력 : 3
이름 입력 : 홍길동
답 입력 : 12311
이름 입력 : 김태리
답 입력 : 12341
이름 입력 : 유연석
답 입력 : 12111
이름 1 2 3 4 5 점수
홍길동 O X X O O 60
김태리 O X X X O 40
유연석 O X O O O 80
2-1. ExamMain.java
package class__;
import java.util.Scanner;
public class ExamMain {
public static void main(String[] args) {
System.out.print("인원수 입력 : ");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
boolean isOk = false;
Exam[] e = new Exam[num];
// 1. 입력
for(int i=0; i<num; i++) {
isOk = false;
e[i] = new Exam();
while(!isOk) {
// 잘못 입력하면 isOk = false
isOk = e[i].compare();
}
}
// 2. 출력
System.out.println("이름\t1 2 3 4 5\t점수 ");
for(int i=0; i<num; i++) {
System.out.print(e[i].getName() + "\t");
char[] ox = e[i].getOx();
for(char re : ox) {
System.out.print(re + " ");
}
System.out.println("\t" + e[i].getScore());
}
}
}
2-2. Exam.java
package class__;
import java.util.Scanner;
public class Exam {
private String name = null;
private String dap = null;
private char[] ox = null;
private int score = 0;
private final String JUNG = "11111"; //상수화
public Exam() {
Scanner sc = new Scanner(System.in);
System.out.print("이름 입력 : ");
this.name = sc.next();
System.out.print("답 입력 : ");
this.dap = sc.next();
}
public boolean compare() {
boolean isOk = false;
System.out.println();
// 1. 사지선다 확인
if(dap.length() == 5) {
for(int j=0; j<JUNG.length(); j++) {
// 2. 모든 입력 값이 1~4 가 맞는지 확인
if(Integer.parseInt(dap.charAt(j)+"") >= 5 ) {
// 입력 값이 5이상일 경우 for문 빠져나감
break;
}else if(j == JUNG.length()-1) {
// 5미만 && 마지막 입력 값 확인
isOk = true;
}
}
}
// 2. 점수 계산
if(isOk) {
this.ox = new char[JUNG.length()];
for(int j=0; j<JUNG.length(); j++) {
if(dap.charAt(j) == JUNG.charAt(j)) {
this.ox[j] = 'O';
score += 20;
}else {
this.ox[j] = 'X';
}
}
}else {
System.out.println("답을 1~4 사이의 정수로 입력해주세요.");
}
return isOk;
}
public String getName() {
return name;
}
public char[] getOx() {
return ox;
}
public int getScore() {
return score;
}
}