배열 대신 ArrayList

이동언·2024년 7월 16일

new world

목록 보기
3/62
post-thumbnail

7.10(수)

1. ArrayList

📌 ArrayList <Integer> list = new ArrayList<Integer>();

👉 자동으로 배열의 크기를 늘려주고, 중간 내용물을 삭제하면 크기를 줄여주는 특성을 가지고 있어서 기존 배열의 고정된 크기를 갖는 단점을 해결함.
👉 기본자료형은 사용이 불가능하여 Wrapper클래스를 사용함.
👉 Wrapper클래스란? 기본타입을 객체로 다루기 위해 사용하는 클래스 int = Integer, double= Double

2. ArrayList remove의 중요성

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의 값이 출력되지 않는다.

3. 돼지저금통 만들기 프로젝트

1. Main class

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();
    }
}
2. PiggySave class
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;
    }
}

3. PiggySaveUI class

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("잘못된 입력입니다. 다시 선택해 주세요."); // 잘못된 입력 처리
            }
        }
    }
}

0개의 댓글