📌 ArrayList <Integer> list = new ArrayList<Integer>();
👉 자동으로 배열의 크기를 늘려주고, 중간 내용물을 삭제하면 크기를 줄여주는 특성을 가지고 있어서 기존 배열의 고정된 크기를 갖는 단점을 해결함.
👉 기본자료형은 사용이 불가능하여 Wrapper클래스를 사용함.
👉 Wrapper클래스란? 기본타입을 객체로 다루기 위해 사용하는 클래스 int = Integer, double= Double
for (int i = 0; i < list.size(); i++) {
System.out.println(list.remove(0));
}
👆 배열에 1,2,3,4,5가 있을때 해당 소스를 사용하면 remove 시킬때마다 size의 값도 매번 변경이 되므로 생각했던 1,2,3,4,5의 값이 출력되지 않는다.
package org.example;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// PiggySave 객체 생성
PiggySave ps = new PiggySave();
// Scanner 객체 생성
Scanner sc = new Scanner(System.in);
// PiggySaveUI 객체 생성 및 생성자를 통한 의존성 주입
PiggySaveUI ui = new PiggySaveUI(sc, ps);
// UI 시작
ui.start();
}
}
package org.example;
public class PiggySave {
private int balance; // 잔액을 저장할 변수
public void deposit(int amount){ // 입금 기능
if(amount < 0){
return; // 잘못된 값이 입력되었을 때 메서드 종료
}
this.balance += amount; // 입금 처리
}
public int withdraw(){ // 출금 기능
int currentBalance = this.balance; // 현재 잔액 저장
this.balance = 0; // 잔액 초기화
return currentBalance; // 출금된 금액 반환
}
public int getBalance(){ // 잔액 확인 기능
return this.balance;
}
}
package org.example;
import java.util.Scanner;
public class PiggySaveUI {
private Scanner scanner; // 입력을 받기 위한 Scanner 객체
private PiggySave piggySave; // PiggySave 객체
// 생성자를 통한 의존성 주입
public PiggySaveUI(Scanner scanner, PiggySave piggySave) {
this.scanner = scanner;
this.piggySave = piggySave;
}
// 입금 기능 구현
public void depositInput(){
System.out.print("얼마를 입금하시겠습니까: ");
int amount = scanner.nextInt();
if(amount < 0){
System.out.println("잘못된 값이 입력되었습니다.");
return;
}
piggySave.deposit(amount); // PiggySave 객체를 통해 입금 처리
System.out.println(amount + " 원이 입금 되었습니다.");
System.out.println("현재 " + piggySave.getBalance()+" 원이 남았습니다.");
System.out.print("\n");
}
// 출금 기능 구현
public void withdrawOut(){
System.out.print("정말로 출금 하시겠습니까: [예: 0 / 아니오: 1 ]");
int result = scanner.nextInt();
if(result == 0){
int current = piggySave.withdraw(); // PiggySave 객체를 통해 출금 처리
System.out.println(current + " 원이 출금되었습니다.");
System.out.print("\n");
} else {
System.out.println("출금이 취소되었습니다.");
}
}
// 메뉴 출력 기능 구현
public void showMenu(){
System.out.println("<=== 돼지저금통 메뉴 ===>");
System.out.println("1. 입금하기");
System.out.println("2. 출금하기");
System.out.println("3. 종료");
}
// 메뉴 선택에 따른 동작 수행
public void start(){
while(true){
showMenu(); // 메뉴 출력
int number = scanner.nextInt(); // 사용자 입력 받기
switch(number){
case 1:
depositInput(); // 입금 기능 호출
break;
case 2:
withdrawOut(); // 출금 기능 호출
break;
case 3:
System.out.println("프로그램이 종료됩니다."); // 종료 메시지 출력
return; // 프로그램 종료
default:
System.out.println("잘못된 입력입니다. 다시 선택해 주세요."); // 잘못된 입력 처리
}
}
}
}