이것이 자바다 6장
Account 클래스를 작성해보세요
요구사항
: Setter와 Getter 이용
: 0과 1,000,000 은 MIN_BALANCE와 MAX_BALANCE 상수를 선언해 이용하세요
: Setter의 매개값이 음수이거나 백만 원을 초과하면 현재 balance 값을 유지하세요
// 은행 계좌 객체
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;
}
}
}
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;
}
}
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());
}
}
실행결과
키보드로부터 계좌 정보를 입력받아, 계좌를 관리하는 프로그램입니다. 실행결과 보고 알맞게 BankApplication 클래스의 메소드를 작성해보세요
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; }
}
// 작성 위치
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;
}
}