Java

While문제 복습

녹녹1 2023. 8. 21. 18:18

문제 

1. ControlLab3 이라는 클래스를 생성한다.
2. 다음 기능을 반복하여 처리하는 자바 프로그램을 구현한다.

   1부터 120까지의 값을 추출하여 
   추출된 숫자가 50 미만이면
             "X : 50 미만"을 출력하고
3, 13, 23, 33, 43 인 경우에만
             "X : *듀크팀*" 을 출력한다.
   추출된 숫자가 50 이상이고 80이하면  
             "X : 50 이상 80 이하"를 출력하고
70~79 인 경우에만  
"X : *턱시팀*" 을 출력한다.
   추출된 숫자가 81 이상이고 100이하면  
             아무것도 출력하지 않고 다시 난수 추출부터 진행한다.
   101~120 이면
             아무것도 출력하지 않고 수행을 종료한다.

   단!! 메시지 출력은 Syste m.out.printf() 로 하며 이 API 를 한번만 호출하여 해결해 본다.
   다음은 수행 예시이다.

10 : 50 미만
             65 : 50 이상 80 이하
             23 : 50 미만
             23 : *듀크팀*
75 : 50 이상 80 이하
             75 : *턱시팀*
33 : 50 미만
       :

 

처음에 푼 코드

package day3;

public class ControlLab4 {
	public static void main(String[] args) {
		int random;
		String text = "";
		while (true) {
			random = (int) (Math.random() * 120) + 1;
			if (random < 50) {
				text += random + ": 50 미만\n";
			} else if (random == 3 || random == 13 || random == 23 || random == 33 || random == 43) {
				text += random + ": *듀크팀*\n";
			} else if (random >= 50 && random <= 80) {
				text += random + ": 50 이상 80 이하\n";
			} else if (random >= 70 && random <= 79) {
				text += random + ": *턱시팀*\n";
			} else if (random >= 81 && random <= 100) {
				continue;
			} else {
				break;
			}
		}
		System.out.printf("%s", text);
	}
}

여기에서 수정해야 할 부분들이 있었다.

 

'3, 13, 23, 33, 43 인 경우  "X : *듀크팀*" 을 출력한다.'

 

이걸 다 적는게 아니라 패턴을 찾아서 할 수 있었다

(선생님께서 말씀하셨는데 내가 제대로 안들어서..^^ 근데 설명 안들어도 할 수 있는 거였는데!!!!)

 

그리고 조건도 제대로 안 읽었다. 

 

             23 : 50 미만
             23 : *듀크팀*
             75 : 50 이상 80 이하
             75 : *턱시팀*

 

이렇게 포함으로 갔어야 됐는데 나는 다 else if로 해버려서 하나씩밖에 안들어갔다 ㅠㅠ

 

 

수정한 코드

package day3;

public class ControlLab3 {
	public static void main(String[] args) {
		int random;
		String text = "";
		while (true) {
			random = (int) (Math.random() * 120) + 1;
			if (random < 50) {
				text += random + ": 50 미만\n";
				if (random % 10 == 3) {
					text += random + ": *듀크팀*\n";
				}
			} else if (random >= 50 && random <= 80) {
				text += random + ": 50 이상 80 이하\n";
				if (random >= 70 && random <= 79) {
					text += random + ": *턱시팀*\n";
				}
			} else if (random >= 81 && random <= 100) {
				continue;
			} else {
				break;
			}
		}
		System.out.printf("%s", text);
	}
}

이렇게 두 조건을 다 만족시켜야 했다,,

 

앞으로는 줄일 수 있는 부분들은 최대한 줄여보고 문제도 제대로 읽고 풀어야겠다!^^