0223 Review

KDU·2022년 2월 23일

자바공부

목록 보기
7/17

반복문을 구현해야 할 때는

 구현해야 할 반복문부터 만들지 말고 일단 원하는 코드가 정상적으로 작동되는 것을 확인한 후 반복문을 추가하는 형식이 좋다. 기초부터 차근차근.

오늘의 코드

  1. 야구게임 구현
package study0223;

import java.util.Random;
import java.util.Scanner;

public class BaseballGame {

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		Random num = new Random();
		int a = 0;
		int b = 0;
		int c = 0;
		int user = 0;
		int userA = 0;
		int userB = 0;
		int userC = 0;
		int strike = 0;
		int ball = 0;
		int out = 0;

		//겹치지 않는 난수 생성기
		while(a==b || b==c || c==a) {
			a = num.nextInt(9)+1;
			b = num.nextInt(9)+1;
			c = num.nextInt(9)+1;
		}
		System.out.println("야구게임을 시작합니다.");

		while(true) {
			while(user == 0) {
				System.out.println("숫자 세자리를 입력하세요.");
				user = scan.nextInt();
				userC = user%10;
				userB = (user%100-userC)/10;
				userA = (user-userB-userC)/100;

				//Error문
				if(user>999 || user<100) {
					System.out.println("Error : 세자릿수를 입력하세요.");
					user = 0;
					continue;
				}
				if(userA == userB || userB == userC || userC == userA) {
					System.out.println("Error : 겹치지 않는 숫자를 입력하세요.");
					user = 0;
					continue;
				}
				if(userA == 0 || userB == 0 || userC == 0) {
					System.out.println("Error : 0이 포함되지 않도록 하세요.");
					user = 0;
					continue;
				}

			}
			
			//a비교문
			if(a == userA) {
				strike++;
			} else if(a == userB || a == userC) {
				ball++;
			} else {
				out++;
			}
			
			//b비교문
			if(b == userB) {
				strike++;
			} else if(b == userA || b == userC) {
				ball++;
			} else {
				out++;
			}
			
			//c비교문
			if(c == userC) {
				strike++;
			} else if(c == userA || c == userB) {
				ball++;
			} else {
				out++;
			}
			
			if(strike == 3) {
				System.out.println("정답입니다! 정답 : "+user);
				scan.close();
				break;
			}
			System.out.printf("user : %s / %sStrike, %sBall, %sOut\n",user,strike,ball,out);
			strike = 0;
			ball = 0;
			out = 0;
			user = 0;
		}

	}

}
  1. 가진 돈을 모두 동전으로 바꾼다면? 코드
package study0223;

import java.util.Scanner;

public class ArrEx4_ChangeMoney {

	public static void main(String[] args) {

		Scanner inputMoney = new Scanner(System.in);
		int[] coinUnit = {500, 100, 50, 10};
		int[] coin = {5, 5, 5, 5};
		int count = 0;
		
		//포스기에 가진 돈 표기
		System.out.println("보유 금액");
		for(int i=0; i<coin.length; i++) {
			System.out.printf("%s원:%s개 ",coinUnit[i],coin[i]);
		}
		
		//금액 입력란
		System.out.printf("\n금액을 입력하세요.\n");
		int money = inputMoney.nextInt();
		System.out.printf("%s원을 거슬러주는 중..\n\n",money);
		
		//거스름 함수
		for(int i=0;i<coinUnit.length; i++) {
			if(money/coinUnit[i] > 0) {
				if(money/coinUnit[i] <= coin[i]) {
					count = money/coinUnit[i];
				} else {
					count = money/coinUnit[i]-(money/coinUnit[i]-coin[i]);					
				}
				money -= count*coinUnit[i];
				coin[i] -= count;
				System.out.printf("%s원짜리 동전 %s개 > ",coinUnit[i],count);
				System.out.printf("남은 금액 : %s\n",money);
			}
		}
		
		//성공 or 실패
		if(money == 0) {
			System.out.println("\n거스름 완료");			
		} else {
			System.out.printf("\n거스름돈이 부족합니다. (%s원 부족)",money);
		}
		inputMoney.close();
		
	}
	
}
profile
의문을 즐깁니다.

0개의 댓글