이 글은 과제 제출 기한이 지났기 때문에

풀이를 정리해도 될 것 같아 비공개 글에서 공개글로 전환하였습니다.

<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.

package assignment2_2;

import java.util.Scanner;

class Account {
    private String owner;
    private long balance;

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public long getBalance() {
        return balance;
    }

    public void setBalance(long balance) {
        this.balance = balance;
    }

    Account(String owner, long balance) {
        this.owner = owner;
        this.balance = balance;
    }

    Account(String owner) {
        this.owner = owner;
        this.balance = 0;

    }

    Account(long balance) {
        this.owner = "";
        this.balance = balance;
    }

    Account() {
        this.owner = "";
        this.balance = 0;

    }

    public long deposit(long amount) {
        System.out.println(amount + "만큼 입금 합니다.");
        balance += amount;
        return balance;
    }

    public long withdraw(long amount) {
        Scanner in = new Scanner(System.in);
        System.out.print("현재 고객님은 " + balance + "원 까지 인출할 수 있습니다.\n");
        if (amount > balance) {
            System.out.print("잔액이 부족하여 인출할 수 없습니다.\n가진 금액을 모두 출금 하시겠습니까? (y/n)");
            String a;
            a = in.next();

            if (a.equals("y")) { // == 로 하면 주소값까지 같아야해서 안됨.
                amount = balance;
                System.out.println(amount + "만큼 인출 합니다.");

                balance -= amount;
                return balance;
            }

            else if (a.equals("n")) {
                System.out.println("인출하지 않습니다.");
                return balance;
            }

            else {
                System.out.println("잘못된 입력입니다.");
                return balance;
            }
        }

        else {
            System.out.println(amount + "만큼 인출 합니다.");

            balance -= amount;
            return balance;
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Account a = new Account();
        System.out.print("사용자 성함을 입력하세요 :");
        a.setOwner(in.next());
        System.out.print("사용자의 잔액은 얼만큼 있는지 적으세요. :");
        a.setBalance(in.nextLong());
        System.out.print(a.getOwner() + "님은 현재 " + a.getBalance() + "원을 가지고 있습니다.\n");
        System.out.print("얼만큼 저축 하시겠습니까? ");
        a.deposit(in.nextLong());
        System.out.print(a.getOwner() + "님은 현재 " + a.getBalance() + "원을 가지고 있습니다.\n");
        System.out.print("얼마를 인출 하시겠습니까? ");
        a.withdraw(in.nextLong());
        System.out.print(a.getOwner() + "님은 현재 " + a.getBalance() + "원을 가지고 있습니다.");
    }
}

과제 2-1 Account 클래스를 만들고, 캡슐화하고, 내용은 owner 와 balance, 생성자 오버로딩 최대로 해봐라.

private 필드로 만든 owner 와 balance, 접근자 getOwner(), getBalance()는 return으로 각각 owner 와 balance를 리턴.

setOwner, setBalance는 return 없으니 void, set에는 owner, balance가 전체 클래스의 매개변수와 메소드 인자가 이름이 같으므로 구별해주기 위해서 this.owner = owner ( this.owner 는 클래스의 owner, owner 는 메소드에서 입력받은 값), 생성자는 owner balance 가 있고 없고따라 하나씩 만들어지니까, 총 4개

과제 2-2 Account에 deposit 과 withdraw 메소드를 추가하세요.

Account 클래스의 main()메소드에서 Account 객체를 생성하여 적당한 저축과 인출을 수행한 후 잔금을 출력

일단 deposit과 withdraw에서 amount를 입력받고, balance에 그 값을 더하거나 빼서 만듬

return은 값이 조정된 balance

과제 2-3 withdraw에서 다음 기능을 추가하여 작성하시오

if조건문을 이용했다. 첫번째 조건은 뽑으려는 금액이 잔액보다 클 경우. 그 경우 사용자 입력을 한번 더 받아서 y / n / else 로 입력을 받아서 y의경우 amount = balance 로 바꾸어, 모든 금액을 출금하고, n의 경우 출금하지 않는것으로, else의 경우, 입력을 잘못 한 경우이므로, 출금하지 않는 것으로 만들었다.
첫번째 조건의 else면 뽑으려는 금액이 잔액보다 작으므로 정상적으로 출금이 일어남.

 

withdraw 모식도