adavaj P(출처 이것이 자바다)/클래스

Chapter06 클래스 확인문제 (풀어야함)

Hesitater 2021. 9. 24. 19:08
728x90

ex13

ex14

ex15

ex16

ex17

ex18


    public class 클래스 {
        //정적필드
        private static 클래스 singleton = new 클래스();

        //생성자
        private 클래스() {}

        //정적 메소드
        static 클래스 getInstance() {
            return singleton;
        }    
    }

Ex19

  1. Setter와 Getter를 이용
  2. 0과 1000000 은 MiN_BALANFE 와 MAX_BALANCE 상수 선언
  3. Setter의 매개값이 음수이거나 백만원을 초과하면 현재 balance값을유지

Ex20

package chap06.exercises.ex20;

import java.util.Scanner;

public class BankApplication {

    private static Account[] accountArray = new Account[100];
    private static int size = 0;
    private static Scanner scanner = 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 = scanner.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;
            }
        }
        scanner.close();
        System.out.println("프로그램 종료");
    }

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

            // 계좌번호 입력
            System.out.print("계좌번호:");
            String ano = scanner.next();
            // 계좌주 입력
            System.out.print("계좌주:");
            String owner = scanner.next();
            // 초기입금액 입력
            System.out.print("초기입금액:");
            int money = scanner.nextInt();

            // Account 객체 생성
            Account newAccount = new Account(ano, owner, money);
            // accountArray 배열에 할당
            accountArray[size++] = newAccount;

            System.out.println("결과: 계좌가 생성되었습니다.");
        }

        //계좌 목록 보기
        private static void accountList() {
            System.out.println("---------");
            System.out.println("계좌목록");
            System.out.println("---------");

            for (int i = 0; i < size; i++) {
                System.out.print(accountArray[i].getAno() + "\t");
                System.out.print(accountArray[i].getOwner() + "\t");
                System.out.println(accountArray[i].getBalance());
            }
        }

        //예금하기
        private static void deposit() {
            System.out.println("-----------");
            System.out.println("예금");
            System.out.println("-----------");

            // 계좌번호
            System.out.print("계좌번호:");
            String ano = scanner.next();
            //예금액
            System.out.println("예금액:");
            int money = scanner.nextInt();

            Account account = findAccount(ano);
            account.setBalance(account.getBalance() + money);

            System.out.println("결과: 예금이 성공되었습니다.");

        }

        //출금하기
        private static void withdraw() {
            System.out.println("-----------");
            System.out.println("출금");
            System.out.println("-----------");

            //계좌번호
            System.out.print("계좌번호:");
            String ano = scanner.next();
            //출금액
            System.out.print("출금액:");
            int money = scanner.nextInt();

            Account account = findAccount(ano);
            account.setBalance(account.getBalance() - money);

            System.out.println("결과: 출금이 성공되었습니다.");
        }

        //Account 배열에서 ano와 동일한 Account 객체 찾기
        private static Account findAccount(String ano) {
            for (int i = 0; i < size; i ++) {
                if(accountArray[i].getAno().equals(ano)) {
                    return accountArray[i];
                }
            }
            return null;
        }


}

결과값

================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>1
---------
계좌생성
---------
계좌번호:111
계좌주:김태희
초기입금액:10000
결과: 계좌가 생성되었습니다.
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>1
---------
계좌생성
---------
계좌번호:222-222
계좌주:전지현
초기입금액:20000
결과: 계좌가 생성되었습니다.
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>2
---------
계좌목록
---------
111    김태희    10000
222-222    전지현    20000
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>3
-----------
예금
-----------
계좌번호:111
예금액:
20000
결과: 예금이 성공되었습니다.
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>4
-----------
출금
-----------
계좌번호:222-222
출금액:1000
결과: 출금이 성공되었습니다.
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>2
---------
계좌목록
---------
111    김태희    30000
222-222    전지현    19000
================================
1.계좌생성 | 2.계좌목록 | 3.예금 | 4.출금 | 5,종료
================================
선택>5
프로그램 종료