Java 간단한 콘솔 프로젝트

자바의 기본 문법을 활용하여 텍스트 기반의 데이터 관리 시스템을 구축하는 콘솔 프로젝트의 핵심 구조를 분석한다.

무한 루프와 조건문을 결합한 제어 흐름 설계가 핵심이다.

프로그램 메인 루프 설계

사용자의 입력에 따라 프로그램이 지속적으로 동작하도록 while 루프와 switch 문을 활용한다.

import java.util.Scanner;

public class ConsoleApp {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean isRunning = true;

        while (isRunning) {
            printMenu();
            String choice = scanner.nextLine();

            switch (choice) {
                case "1":
                    addData(scanner);
                    break;
                case "2":
                    listData();
                    break;
                case "0":
                    System.out.println("Exiting program...");
                    isRunning = false;
                    break;
                default:
                    System.out.println("Invalid choice. Try again.");
            }
        }
    }

    private static void printMenu() {
        System.out.println("\n--- Data Management System ---");
        System.out.println("1. Add Data | 2. List All | 0. Exit");
        System.out.print("Select: ");
    }
}

예외 방어 및 데이터 관리

사용자 입력의 불확실성을 제어하고 동적인 데이터를 관리하기 위해 try-catchArrayList를 적용한다.

import java.util.ArrayList;
import java.util.List;

public class DataManager {
    private List<String> items = new ArrayList<>();

    public void addData(Scanner scanner) {
        try {
            System.out.print("Enter value: ");
            String input = scanner.nextLine();
            if (input.isEmpty()) throw new Exception("Empty input not allowed.");
            items.add(input);
            System.out.println("Data added successfully.");
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
    }
}

프로젝트 구현 시 주의사항

  • Scanner 버퍼 관리: nextInt() 사용 후 남은 개행 문자를 처리하기 위해 nextLine()을 추가로 호출하거나, 처음부터 nextLine()으로 받아 파싱하는 것이 안전하다.
  • 객체지향적 분리: 메인 함수에 모든 로직을 넣지 않고, 기능별로 클래스(Manager, Model 등)를 분리하여 응집도를 높인다.

P.S

콘솔 프로젝트는 프로그램의 입력-처리-출력(IPO) 주기를 이해하는 가장 좋은 실습이다.

단순한 기능을 넘어 예외 상황에 대한 방어 로직을 구축함으로써 견고한 소프트웨어 개발의 기초를 다질 수 있는 것 같다.

Author avatar

웨이호프

WordPress creator and blogger.

View all posts