반응형
문제
잔액조회와 인출이 가능한 은행 거래 프로그램을 만들어 보자.
<조건>
1. 프로그램에는 세 가지 메뉴가 포함된다. (잔액조회, 인출, 종료)
2. 사용자로부터 패스워드를 입력받아 정보를 보호한다. (패스워드가 틀린 경우 실행이 안 됨)
3. 인출금액은 잔액보다 클 수 없다.
4. 사용자가 종료를 원할 때까지 반복 실행한다.
5. 예금이 인출 된 후에는 인출된 만큼 잔액이 감소해야 한다.
실행화면
코드
import java.util.Scanner;
public class bank {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in);
System.out.println("============00은행=============\n"
+ "사용하실 메뉴를 선택해주세요. \n"+ "1.예금조회 \n2.예금인출\n3.종료");
int menu = Integer.parseInt(sc.nextLine()); //사용자에게서 입력받은 메뉴값을 저장하는 변수
int total = 1000000; //초기계좌잔액 설정
int password = 0; //패스워드 변수
int out = 0; //출금 금액
while(menu!=3) {
System.out.println("계좌 비밀번호를 입력해주세요.");
//1, 2번 메뉴를 실행하기 위해서는 비밀번호를 올바르게 입력해야 한다.(1,2번 공통)
password = Integer.parseInt(sc.nextLine());
while(password != 1234) {
System.out.println("비밀번호 오류입니다. 다시 입력해주세요.");
password = Integer.parseInt(sc.nextLine());
//비밀번호 오류 시 다시 입력받는다.(1,2번 공통)
}
if (menu == 1) {
if (password==1234) {
System.out.println("고객님의 계좌잔액은 "+total+"원 입니다.");
} //사용자가 입력한 비밀번호와 설정해 둔 비밀번호가 동일한 경우 실행된다.
}
if (menu == 2) {
if(password == 1234){
System.out.println("인출할 금액을 입력해주세요.");
out = Integer.parseInt(sc.nextLine());
while(out>total) { //인출할 금액이 잔액보다 큰 경우 오류 메시지를 송출
System.out.println("잔액이 부족합니다. 다시 입력해주세요.");
System.out.println("인출할 금액을 입력해주세요.");
//인출 금액을 다시 입력받는다.
out = Integer.parseInt(sc.nextLine());
}
if(out <= total){
total -= out;
//잔액에서 인출된 금액을 감산한다. 결과적으로 인출을 여러번 실행하면 인출 총액만큼 잔액이 줄어든다.
System.out.println("출금이 완료되었습니다.");
}
}
}
System.out.println("============00은행=============\n "
+ "사용하실 메뉴를 선택해주세요. \n"
+ "1.예금조회 \n2.예금인출\n3.종료");
menu = Integer.parseInt(sc.nextLine());
//1번이나 2번 메뉴 실행 후 다시 메뉴값을 입력받기 위한 장치이다.
//사용자가 3.종료를 입력하기 전까지는 계속해서 프로그램이 돌아간다.
}
System.out.println("프로그램을 종료합니다.");
//사용자가 3.종료를 입력하면 메시지 송출과 함께 프로그램이 종료된다.
}
}
주의사항
while(password != 1234) {
System.out.println("비밀번호 오류입니다. 다시 입력해주세요.");
password = Integer.parseInt(sc.nextLine());
}
패스워드가 틀렸을 때 오류메시지 송출과 함께 비밀번호를 다시 입력받는 부분.
언뜻 생각하면 이 부분을 if문을 이용해 처리해야겠다고 생각할 수 있지만 그렇게 하면 실행이 한 번만 이루어진다.
패스워드가 틀린 동안 계속 반복해야 하므로 반복문 while을 사용하는 것이 좋다.
while(out>total) {
System.out.println("잔액이 부족합니다. 다시 입력해주세요.");
System.out.println("인출할 금액을 입력해주세요.");
out = Integer.parseInt(sc.nextLine());
}
이 부분도 같은 맥락에서 이해할 수 있다.
인출 금액이 잔액보다 큰 동안 계속 반복해야 하므로 while문(반복문)을 사용해야 한다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
뉴렉처 자바 JDBC 프로그래밍 강의 내용 정리 9-18강 (0) | 2021.08.16 |
---|---|
뉴렉처 자바 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 |