우당탕탕 개발일지

8일차_과제 본문

카테고리 없음

8일차_과제

ujin302 2024. 7. 12. 18:12
반응형

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;
	}
}

 

 

 

반응형