✍문제
은행계좌(Account2) 클래스 정의
- 메서드
1) showAccountInfo() : 계좌정보를 출력
< 출력예시 >
계좌번호 : 111-1111-111
예금주명 : 홍길동
현재잔고 : 100000원
2) deposit() : 입금 기능
- 매개변수 : 입금금액(정수, amount), 리턴값 없음
- 입금할 금액(amount)을 전달받아 현재잔고(balance)에 누적
- 입금할 금액과 입금 후의 잔고를 다음과 같이 출력
입금금액 : XXX원
현재잔고 : XXX원
3) withdraw() : 출금 기능
- 매개변수 : 출금할 금액(정수, amount), 리턴값 : 출금된 금액
- 출금할 금액(amount)을 전달받아 다음 조건에 따라 출금 수행
a. 출금할 금액보다 현재잔고가 작을 경우 (출금이 불가능할 경우)
출력) 출금할 금액 : XXX원
잔액이 부족하여 출금 불가! (현재잔고: XXX원)
b. 출금할 금액보다 현재잔고가 크거나 같은 경우 (출금이 가능할 경우)
출금할 금액만큼 현재잔고에서 차감 후 다음과 같이 출력
출금할 금액 : XXX원 * 현재잔고 : XXX원 -> 출금하고 남은 금액만큼 출력
출금할 금액만큼 리턴
✍ 클래스 작성
class Account2 { // 클래스 작성
// 멤버변수 선언(초기화 x)
String accountNo;
String ownerName;
int balance;
public void showAccountInfo() { // 계좌정보 출력 메서드 생성
System.out.println("계좌번호: " + accountNo);
System.out.println("예금주명: " + ownerName);
System.out.println("현재잔고: " + balance + "원");
}
public void deposit(int amount) { // 입금 메서드 생성
balance += amount;
System.out.println("입금금액: " + amount + "원");
System.out.println("현재잔고: " + balance + "원");
}
public int withdraw(int amount) { //출금 메서드 생성
if(balance<amount) { // 잔액이 출금 금액보다 적은 경우. 즉 출금이 불가한 경우
System.out.println("출금할 금액: " + amount + "원");
System.out.println("잔액이 부족하여 출금 불가! " + "(현재잔고 : " + balance + "원)");
// return 0; // 1번째 방법
amount = 0; // 2번째 방법
// 출금을 할 수 없을 경우 돈이 출금되지 않았기 때문에 0을 저장하거나 리턴해주면 된다.
} else { // 잔고가 출금 금액보다 크거나 같은 경우. 즉 출금이 가능한 경우
balance -= amount; // 변수 balance에 출금금액인 amount를 누적
System.out.println("출금할 금액: " + amount + "원");
System.out.println("현재잔고: " + balance + "원");
// return amount; // 2번째 방법. if문 안에 리턴 값을 지정할 경우
}
return amount; // 실제로 출금되는 금액
}
- 주의할 점! if문 안에 리턴 값을 지정하기 위해서는 각 조건마다 리턴타입을 모두 적어주어야 한다.
✍메인 메서드
public static void main(String[] args) {
Account2 a = new Account2(); // Account 객체 생성
// 멤버변수 초기화
a.accountNo = "123-456-7890";
a.ownerName = "홍길동";
a.balance = 100000;
a.showAccountInfo(); // 클래스의 showAccountInfo() 메서드 호출
System.out.println("---------------------------");
a.deposit(50000); // 입금 메서드 호출. 50000원 입금
int result = a.withdraw(100000); // 출금 메서드 호출. 100000원 출금
System.out.println("출금한 금액: " + result + "원"); // 실제 출금한 금액
}
💻 출금이 가능한 경우
💻출금이 불가능한 경우
- 잔고가 출금금액보다 적기 때문에 출금할 수 없다.
- 그래서 리턴값 0이 리턴된다.
✍송금 메서드 만들기
public void transfer(int amount, Account2 other) { // 매개변수: 송금금액, 송금받는사람
balance -= amount; // 변수 balance에 송금한 금액 amount를 누적
other.balance += amount; // 송금 받는 사람의 balance에 amount를 누적
System.out.println(ownerName + "의 잔액: " + balance); // 송금 보낸 사람의 잔고
System.out.println(other.ownerName + "의 잔액: " + other.balance); // 받은 사람의 잔고
}
✍또 다른 객체 생성하기
Account2 a2 = new Account2();
a2.accountNo = "111-1111-1111";
a2.ownerName = "이순신";
a2.balance = 500000;
✍ 홍길동(a)이 이순신(a2)에게 송금해주는 경우
a.transfer(100000, a2);
- 홍길동이 이순신에게 100000원을 송금한다.
✍그 전에 현재 홍길동과 이순신의 계좌정보를 확인하기
💻 송금 결과
- 홍길동은 이순신에게 100000원을 송금했다. 원래 잔고는 150000원 이었기 때문에 송금 후 잔액은 50000원이다.
- 이순신은 이순신에게 100000원을 받았다. 원래 잔고는 500000원 이었기 때문에 송금 후 잔액은 600000원이다.
'개발 > Java' 카테고리의 다른 글
[Java] 생성자 (0) | 2023.01.17 |
---|---|
[Java] 주소 값 확인 연습 (0) | 2023.01.16 |
[Java] 클래스(class) (0) | 2023.01.16 |
[Java] 다리 건너기 문제 (0) | 2023.01.13 |
[Java] 배열을 활용한 거스름돈 문제 (0) | 2023.01.13 |