[자바] 은행 계좌

오늘·2021년 3월 8일
0

문제풀기

목록 보기
12/24

이것이 자바다 6장

확인문제 19번

Account 클래스를 작성해보세요

요구사항
: Setter와 Getter 이용
: 0과 1,000,000 은 MIN_BALANCE와 MAX_BALANCE 상수를 선언해 이용하세요
: Setter의 매개값이 음수이거나 백만 원을 초과하면 현재 balance 값을 유지하세요

1. public class Account

// 은행 계좌 객체

package test1_6;

public class Account {
	// 은행 계좌 객체
	
	private int balance;
	
	// 1. setter getter 를 이용하세요
	public int getBalance() {
		return balance;
	}
//	public void setBalance(int balance) {
//		this.Balance = Balance;
//	}
	
	// 2. 상수 만들기
	final static int MIN_BALANCE = 0;
	final static int MAX_BALANCE = 1000000;
	
	// 3. setter의 매개값이 음수이거나 백만원 초과시 현재 Balance 값을 유지하세요
	public void setBalance(int balance) {
		if (balance >= MIN_BALANCE && balance <= MAX_BALANCE) {
			this.balance = balance;
		}
	}
}
  1. public class Account2
    // 잔고
package test1_6;

public class Account2 {
	int balance;
	// 잔고

	// 상수 만들기
	final static int MIN_BALANCE = 0;
	final static int MAX_BALACE = 1000000;

	void setBalace(int balance) {
		// 조건 처리하는 메소드 호출
		this.balance = ifMethod(balance);
	}

	int getBalance() {
		return balance;
	}

	// 조건 처리하는 메소드
	// 또다른 클래스에서 사용할 필요도, 사용할 이유도 없고
	// 같은 클래스에 있는 setBalance 메소드만 사용할 것이기 때문에 private 로 조건 지정
	private int ifMethod(int balance) {
		if (balance < MIN_BALANCE || balance > MAX_BALACE) {
			balance = this.balance;
			// 멤버에 있는 balance 를 입력받은 변수에 넣어주기
		}
		return balance;
	}
}
  1. public class AccountExample
    // 입출력
package test1_6;

public class AccountExample {
	public static void main(String[] args) {
		Account account = new Account();

		account.setBalance(10000);
		System.out.println("현재 잔고 : " + account.getBalance());

		// 0보다 작은 값이니 합산되지 않고 원래 값이 그대로 출력된다
		account.setBalance(-100);
		System.out.println("현재 잔고 : " + account.getBalance());

		// 100만 보다 큰 값이니 합산되지 않고 원래 값이 그대로 출력된다
		account.setBalance(2000000);
		System.out.println("현재 잔고 : " + account.getBalance());

		account.setBalance(300000);
		System.out.println("현재 잔고 : " + account.getBalance());
	}
}

실행결과


확인문제 20번

키보드로부터 계좌 정보를 입력받아, 계좌를 관리하는 프로그램입니다. 실행결과 보고 알맞게 BankApplication 클래스의 메소드를 작성해보세요

  1. public class Account
package test2_6;

public class Account {
	private String ano;
	private String owner;
	private int balance;
	
	public Account(String ano, String owner, int balance) {
		this.ano = ano;
		this.owner = owner;
		this.balance = balance;
	}
	
	public String getAno() { return ano; }
	public void setAno(String ano) { this.ano = ano;}
	
	public String getOwner() { return owner; }
	public void setOwner(String owner) { this.owner = owner; }
	
	public int getBalance() { return balance; }
	public void setBalance(int balance) { this.balance = balance; }
}

2. public class BankApplication

// 작성 위치

package test2_6;

import java.util.Scanner;

public class BankApplication {
	private static Account[] accountArray = new Account[100];
	private static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		boolean run = true;
		
		while(run) {
			System.out.println("-----------------------------------------------------------");
			System.out.println("1.계좌 생성 | 2.계좌목록 | 3.예금 | 4.출금  | 5.종료");
			System.out.println("-----------------------------------------------------------");
			System.out.print("선택 >>");
			
			int selectNo = sc.nextInt();
			
			if(selectNo == 1) {
				// 계좌 생성하기
				createAccount();
			} else if(selectNo == 2) {
				//계좌 목록보기
				accountList();
			} else if(selectNo == 3) {
				//예금하기
				deposit();
			} else if(selectNo == 4) {
				//출금하기
				withdraw();
			} else if(selectNo == 5) {
				run = false;
			}
		}
		System.out.println("프로그램 종료");
	}

	// 계좌 생성하기
	private static void createAccount() {
		System.out.println("---------------");
		System.out.println("계좌 생성");
		System.out.println("---------------");

		System.out.println("계좌 생성 번호");
		System.out.print("계좌 번호 : ");
		String ano = sc.next();

		System.out.print("계좌 주 : ");
		String owner = sc.next();

		System.out.print("초기 입금액 : ");
		int balance = sc.nextInt();

		Account ac = new Account(ano, owner, balance);

		for (int i = 0; i < accountArray.length; i++) {
			if (accountArray[i] == null) {
				accountArray[i] = ac;
				System.out.print("결과: 계좌가 생성되었습니다.");
				break;
			}
		}
	}
	
	// 계좌 목록보기
	private static void accountList() {
		System.out.println("---------------");
		System.out.println("계좌 목록");
		System.out.println("---------------");
		
		for(int i=0; i<accountArray.length; i++) {
			if (accountArray[i] != null) {
			System.out.println(accountArray[i].getAno() + "\t"
					+ accountArray[i].getOwner() + "\t" + accountArray[i].getBalance());
			}
		}
	}
	
	
	//예금하기
	private static void deposit() {
		System.out.println("---------------");
		System.out.println("예금");
		System.out.println("---------------");
		
		System.out.print("계좌 번호 : ");
		String ano_i = sc.next();
		System.out.print("예금액 : ");
		int balance = sc.nextInt();

		Account ac = findAccount(ano_i);

		if (ac == null) {
			System.out.println("잘못된 계좌입니다");
			return;
		}
		
		ac.setBalance(ac.getBalance() + balance);
		System.out.println("예금이 성공되었씁니다.");
	}

	
	
	// 출금하기
	private static void withdraw() {
		System.out.println("---------------");
		System.out.println("출금");
		System.out.println("---------------");
		
		System.out.print("계좌 번호 : ");
		String ano_i = sc.next();
		System.out.print("출금액 : ");
		int balance = sc.nextInt();
		
		Account ac = findAccount(ano_i);

		if (ac == null) {
			System.out.println("잘못된 계좌입니다");
			return;
		}

		if (ac.getBalance() < balance) {
			System.out.println("예금액이 모자라 출금할 수 없습니다");
			System.out.println("현재 잔액은 " + ac.getBalance() + "원 입니다");
			return;
		} else {
			ac.setBalance(ac.getBalance() - balance);
			System.out.println("출금이 성공되었씁니다.");
		}
	}
	
	
	// Account 배열에서 ano와 동일한 Account 객체 찾기
	private static Account findAccount(String ano) {
		Account account = null;

		for (int i = 0; i < accountArray.length; i++) {
			if (accountArray[i] != null) {
				if (accountArray[i].getAno().equals(ano)) {
					account = accountArray[i];
					break;
					// break 해주지 않으면 빠져나오지 않고 else까지 처리된다.
					// 그럼 값이 null로 리턴되어 어떤 계좌를 입력해도 없는 계좌라고 출력됨
				} else {
					account = null;
				}
			}
		}
		return account;
	}
}

0개의 댓글