본문 바로가기
Java

While문제 복습

by 녹녹1 2023. 8. 21.

문제 

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

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

 

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

'Java' 카테고리의 다른 글

자바 Optional 클래스  (1) 2023.11.28
[프로그래머스/JAVA]기사단원의 무기  (1) 2023.09.11
java 로또 번호 6개 (중복 없이)  (0) 2023.08.22

댓글