반응형
문제
while 문을 사용하여 중국집 메뉴 주문 프로그램을 작성해보자.
<조건>
1. 메뉴는 4가지
2. 각 메뉴의 가격은 임의대로 지정한다.
3. 사용자는 메뉴와 주문할 메뉴 개수를 입력한다.
4. 사용자의 주문은 사용자가 종료를 원할 때까지 반복된다.
5. 최종적으로 모든 주문의 합계를 출력한다.
실행화면
코드
import java.util.Scanner;
public class china {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
int ord = 10; //사용자가 입력할 메뉴를 저장하는 변수
int num = 0; //메뉴의 개수를 저장할 변수
int x = 0; //조건문 안에 들어갈 변수, 음식의 값을 저장하는 변수
int total = 0; //총 금액
while(ord != 0) { //사용자가 메뉴 입력시 0을 입력할 때까지 반복
System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면 2.짬뽕 3.탕수육 4.크림새우");
ord = Integer.parseInt(sc.nextLine());
System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
num = Integer.parseInt(sc.nextLine());
if(ord == 1) {
x = 4000;
} else if(ord == 2) {
x = 4500;
} else if(ord == 3) {
x = 6000;
} else if(ord == 4) {
x = 6500;
}
total += x*num; //반복문이 한번 돌때마다 총 금액을 가산하여 total변수에 저장
System.out.print("종료하시겠습니까? 0.종료 5.계속\n");
ord = Integer.parseInt(sc.nextLine());
}
System.out.println("주문하신 메뉴의 총 금액은 "+total+"원 입니다.");
//반복문에서 빠져나오면 총 금액을 출력
}
}
주의사항
반복문 내에서 계속 반복해야 할 지점을 염두에 두고 조건을 잘 설정해야 한다.
무한 루프에 빠지면 이클립스 IDE가 오작동을 일으킨다.
이 문제의 경우 사용자에게 언제 무엇을 입력받을지를 잘 생각하고 while 문 안에 적절히 배치하는 것이 도움이 되었다.
나의 경우,
1. 초기 메뉴판 입력을 while 문안에 넣지 않아서 오류 발생
Scanner sc = new Scanner (System.in);
int ord = 10;
int num = 0;
int x = 0;
int total = 0;
while(ord != 0) {
System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면 2.짬뽕 3.탕수육 4.크림새우");
ord = Integer.parseInt(sc.nextLine());
System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
num = Integer.parseInt(sc.nextLine());
이 부분에서,
Scanner sc = new Scanner (System.in);
System.out.println("주문하실 메뉴를 입력해주세요.\n 1.짜장면 2.짬뽕 3.탕수육 4.크림새우");
ord = Integer.parseInt(sc.nextLine());
System.out.println("주문하실 메뉴의 개수를 입력해주세요.");
num = Integer.parseInt(sc.nextLine());
int ord = 10;
int num = 0;
int x = 0;
int total = 0;
while(ord != 0) {
초기에는 이렇게 코딩을 했는데, 당연하게도 메뉴주문판이 반복되지 않았다.
2. 마지막 부분, 종료 의사를 묻는 지점
total += x*num;
System.out.print("종료하시겠습니까? 0.종료 5.계속\n");
ord = Integer.parseInt(sc.nextLine());
이 부분에서는 total 값을 지정하는 것도 한번 헷갈렸고,(total = x*num으로 코딩하였더니 마지막 계산 부분만출력되었다.) 두 번째로 헷갈린 부분이 종료 안내 문구 뒤 사용자에게 다시 한번 값을 입력받는 부분이다.
처음에 ord = Integer.parseInt(sc.nextLine()); 부분을 추가하지 않았었는데, 바로 메뉴 주문판이 떠서 의도대로 코딩이 되지 않았었다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
뉴렉처 자바 JDBC 프로그래밍 강의 내용 정리 1-8강 (0) | 2021.08.16 |
---|---|
[자바] 배열 역순 출력 (0) | 2020.11.09 |
[자바] 은행 프로그램(잔액 조회, 인출)(while문 활용) (0) | 2020.11.09 |
[자바] 월급 계산 프로그램(조건문 switch 문 활용) (0) | 2020.11.09 |
[자바] 총점 평균 학점 출력 프로그램(if문 활용) (0) | 2020.11.09 |
[자바] hello world 출력해보기 (0) | 2020.11.09 |