자세히보기

IT/Programming

[Java] 이중 do-while 문

COMDORI 2020. 3. 4. 18:58
728x90
반응형

2020/03/04 - [IT/Programming Practice] - [Java] 간단한 출력문

2020/03/04 - [IT/Programming Practice] - [Java] 계산기

2020/03/04 - [IT/Programming Practice] - [Java] 3 거스름돈 분리 계산

2020/03/04 - [IT/Programming Practice] - [Java] 4 성적 출력 하기

2020/03/04 - [IT/Programming Practice] - [Java] 짝수, 홀수, 제로 숫자 세기 프로그램

2020/03/04 - [IT/Programming Practice] - [Java] 반지름 입력후 원의 넓이 구하기

2020/03/04 - [IT/Programming Practice] - [Java] 학생 정보 입력 시스템 출력

2020/03/04 - [IT/Programming Practice] - [Java] do~while문을 활용한 출력 프로그램

 

▶ 조건

 Class 는 총 2개의 클래스가 필요하다.

  Order class 

 showMenu: 지정된 가격을 보여주는 method 

 setPrice: 컴퓨터, 휴대폰, TV 가격 가격 지정 

 Result: 선택한 제품에 맞춰서 결과 출력하는 method

Order 

-com_price :int

-phone_price:int

-tv_price :int 

-cost : int //주문한 가격 

-String item;

+setPrice(String item, int price): void 

+showMenu(void): void 

+Result(int money, int menu) : void

 Main()

 처음 시작할 때, 컴퓨터, 핸드폰, TV의 가격을 정한다.

 그 후, 현재 갖고 있는 돈을 입력 받는다.

 do -while 통해서 Order class 에 있는 showMenu() 를 호출하여 화면에 보여준다

 Menu에서 선택한 상품의 가격을 뺀 결과를 Order class 의 Result() 를 호출하여 보여준다.

 Y 을 누르면 프로그램 계속 한다.

소스코드

Order 클래스

import java.util.Scanner;
public class Order {

	static int com_price = 0, phone_price = 0, tv_price = 0, money;
	static String Menu;
	String item;

	static Scanner scan = new Scanner(System.in);

	public static void showMenu() {

		Menu = scan.next();
		if ("1".equals(Menu)) {// 1번 메뉴 컴퓨터 이벤트
			if (money < Order.com_price) {
				System.out.println("선택한 상품은 컴퓨터 입니다.");
				System.out.println("돈이 부족합니다.");
			} else {
				System.out.println("선택한 상품은 컴퓨터 입니다.");
				money = money - com_price;
				System.out.println("남은돈은 " + money + "원 입니다.");
			}
		} else if ("2".equals(Menu)) {// 2번 메뉴 휴대폰 이벤트
			if (money < phone_price) {
				System.out.println("선택한 상품은 휴대폰 입니다.");
				System.out.println("돈이 부족합니다.");
			} else {
				System.out.println("선택한 상품은 휴대폰 입니다.");
				money = money - phone_price;
				System.out.println("남은돈은 " + money + "원 입니다.");
			}
		} else if ("3".equals(Menu)) {// 3번 메뉴 TV 이벤트
			if (money < tv_price) {
				System.out.println("선택한 상품은 TV 입니다.");
				System.out.println("돈이 부족합니다.");
			} else {
				System.out.println("선택한 상품은 TV 입니다.");
				money = money - tv_price;
				System.out.println("남은돈은 " + money + "원 입니다.");
			}
		} else {// 다른 수를 입력 받았을때의 이벤트
			System.out.println("처음부터 다시해주세요.");
			return;
		}
	}

	public static void setPrice(String item, int price) {// 가격 변수 연결
		if (item == "COMPUTER") {
			com_price = com_price;
		} else if (item == "Phone") {
			phone_price = phone_price;
		} else if (item == "TV") {
			tv_price = tv_price;
		}
	}

	void Result(int money, int menu) {
		return;
	}
}

 

메인클래스

import java.util.Scanner;

public class HW1_1 {

	public static int money = 0; // 사용자가 가지고 있는 금액 변수 지정.

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);

		System.out.println("======================\n학번: 20160000\n이름: 컴돌이\n======================");

		do {
			String check = "Y"; // 메뉴에서 Y선택시 반복하여 진행
			System.out.println("상품의 가격을 정해주세요.");
			System.out.println("컴퓨터: ");
			Order.com_price = scan.nextInt(); // 컴퓨터 가격 입력받기.
			System.out.println("휴대폰: ");
			Order.phone_price = scan.nextInt(); // 휴대폰 가격 입력받기.
			System.out.println("TV: ");
			Order.tv_price = scan.nextInt(); // TV 가격 입력받기.

			do {
				System.out.println("돈을 입력해주세요.");
				Order.money = scan.nextInt();// 사용자가 가지고 있는 금액 입력받기.

				System.out.println("상품을 선택하세요.");
				System.out.println("|1. 컴퓨터: ₩" + Order.com_price + "|");
				System.out.println("|2. 휴대폰: ₩" + Order.phone_price + "|");
				System.out.println("|3. TV: ₩" + Order.tv_price + "|");
				Order.showMenu(); // Order클래스에서 계산후 출력.
				System.out.println("계속하시겠습니까? (y/n)");
				check = scan.next();// 계속 할것인지 입력받기.
				if ((check.equalsIgnoreCase("Y"))) {
					continue;// 계속하여 진행됨.
				} else if ((check.equalsIgnoreCase("n"))) {
					System.exit(0);// 프로그램이 종료됨.
				}
			} while (true);
		} while (true);
	}
}

 

◈ 소스코드를 보시고 고칠 부분이나 더 좋은 로직이 있다면 코멘트 달아주세요! 

이상 문제 9번 입니다.

 

컴돌이블로그

 

#자바

728x90
반응형