2주차 연습문제 (0908 제출)

 

 

실행결과

 

 

1. Run 할 시, 실행되는 메인 함수

> ProductManager을 생성하며 내부 생성자에서 작업을 처리하도록 한다.

import java.util.Scanner;
 
public class Main
{
    public static Scanner Scanner;
    
    public static void main(String[] args) 
    {
        Scanner = new Scanner(System.in);
        
        new ProductManager();
    }
}
 
cs

 

2. Product 클래스.

> Product에 담겨질 내용들을 선언하고, 생성자 오버라이드와 게터를 통해 클래스에 접근하도록 하였다.

public class Product 
{
    private String     mBarcode;
    private String     mProductName;
    private int     mPrice;
    
    public Product(String barcode, String productName, int price)
    {
        this.mBarcode = barcode;
        this.mProductName = productName;
        this.mPrice = price;
    }
    
    public Product(String barcode, int price)
    {
        this(barcode, "No name", price);        
    }
    
    public Product(String barcode, String productName)
    {
        this(barcode, productName, 0);    
    }
        
    public Product(String barcode)
    {
        this(barcode, "No name"0);    
    }    
    
    public String GetBarcode() { return mBarcode; }
    public String GetProductName() { return mProductName; }
    public int GetPrice() { return mPrice; }
}
 
cs

 

3. 핵심 기능이 들어있는 ProductManager

> ArrayList로 선언하여 Product가 유동적으로 들어갈 수 있게 하였다.

> 입력란이 공백일 경우가 있으므로 모두 String Type으로 NextLine을 이용해 입력을 받고 입력값이 ""(비어있음)인지 확인하여 적절한 생성자를 호출하도록 구현한것이 핵심이다.

> Java에서는 String 변수의 비교를 String == "..." 으로 하면 참이 나오지 않기에(문자열 자체를 비교하지 않고 메모리를 비교함) 객체 클래스 함수인 .equals("...") 함수를 통해 검색 기능을 구현하였다.

import java.util.ArrayList;
 
public class ProductManager 
{
    private ArrayList<Product> mProducts;
    
    public ProductManager()
    {
        mProducts = new ArrayList<Product>();
        
        this.Start();
    }
    
    private void Start()
    {
        System.out.println("## 상품 정보 입력 ##");
        
        //상품 데이터 입력(3회)
        for(int i = 0; i < 3++i) { InputProduct(); }
        SearchProduct();
        
        System.out.print("프로그램을 종료합니다.");
    }
    
    private void InputProduct()
    {
        String barcode, name, price;
        
        System.out.print("바코드: ");
        barcode = Main.Scanner.nextLine();
        
        System.out.print("상품명: ");
        name = Main.Scanner.nextLine();
        
        System.out.print("가격: ");
        price = Main.Scanner.nextLine();
        
        if(name.equals(""&& price.equals(""))
        {
            mProducts.add(new Product(barcode));
        }
        else if(name.equals(""))
        {
            mProducts.add(new Product(barcode, Integer.parseInt(price)));
        }
        else if(price.equals(""))
        {
            mProducts.add(new Product(barcode, name));
        }
        else
        {
            mProducts.add(new Product(barcode, name, Integer.parseInt(price)));
        }
        
        System.out.println(mProducts.get(mProducts.size() - 1).GetProductName() + " 추가되었습니다. \n");
    }
    
    private void SearchProduct()
    {
        String input;
        
        System.out.println("## 상품 검색 ##");
        while(true)
        {
            System.out.print("바코드: ");
            
            input = Main.Scanner.nextLine();
            if(input.equals("Q")) { break; }
            
            for(int i = 0; i < mProducts.size(); ++i)
            {
                if(mProducts.get(i).GetBarcode().equals(input))
                {
                    System.out.println(mProducts.get(i).GetProductName() + ", " + mProducts.get(i).GetPrice() + "원\n");
                }
            }
            
        }
    }
}
cs
bonnate