이 글은 과제 제출 기한이 지났기 때문에
풀이를 정리해도 될 것 같아 비공개 글에서 공개글로 전환하였습니다.
<안내>
필자도 배우는 입장이라 틀린점, 잘못된 점이 있을 수 있습니다.
그러니 지적, 피드백 환영합니다.
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면 뽑으려는 금액이 잔액보다 작으므로 정상적으로 출금이 일어남.
'TIL > [객체지향 프로그래밍] TIL' 카테고리의 다른 글
TIL (22.04.19) 시험범위 4장 정리 (0) | 2022.04.20 |
---|---|
TIL (22.04.17) 시험범위 정리 3장 (0) | 2022.04.17 |
TIL (22.04.16) 시험범위 정리 2장 (0) | 2022.04.16 |
TIL (22.04.16) 시험 범위 정리 1장 (0) | 2022.04.16 |
TIL (22.04.13) (0) | 2022.04.13 |