휴먼교육센터 개발자과정 34일차

조하영·2022년 9월 20일
0

배열과 리스트

  1. 배열의 특징: 연속공간, 순서가 있고 크기는 고정

배열은 그 크기를 변경하기 어렵기 때문에 리스트를 많이 사용한다.

  1. 리스트(ArrayList)의 특징: 연속공간, 순서가 있고 크기가 유동적
	package Test;

	import java.util.ArrayList;

	public class Test {

    public static void main(String[] args) {

    //1.선언
        //배열
        Member[] mlist1= new Member[10];

        //리스트
        ArrayList<Member> mlist2= new ArrayList<>();

    //2.입력
        Member m1= new Member("kim",23);
        Member m2= new Member("lee",23);
        //배열
        for(int i=0; i<mlist1.length;i++) {
            if(mlist1[i]==null) {
                mlist1[i]= m1;
                break;

          }
      }

      //리스트
      mlist2.add(m1);
      mlist2.add(m2);
	
    //3.값 가져오기
        //배열
        for(int i=0; i<mlist1.length;i++) {
            if(mlist1[i]!=null) {
                mlist1[i].prt();
            }
        }
	
	//리스트
	for(int i=0; i<mlist2.size();i++) {
		mlist2.get(i).prt();
	}
	System.out.println("--------------");
	//실습문제
	
	//1. lee이름을 park으로 변경하는 코드를 한줄로 작성
	mlist2.get(1).name="park";
    //		for(int i=0; i<mlist2.size();i++) {
    //			if(mlist2.get(i).name=="lee") {
    //				mlist2.get(i).name="park";
    //			}
    //		}
        //2. 리스트의 모든값을 출력
        for(int i=0; i<mlist2.size();i++) {
            mlist2.get(i).prt();
        }
        System.out.println("--------------");
        //3. 이름이 choi,나이가 33인 객체를 새로만들고 추가
        Member m3= new Member("choi",33);
        mlist2.add(m3);
        //4. 리스트의 모든값을 출력
        for(int i=0; i<mlist2.size();i++) {
            mlist2.get(i).prt();
        }
        System.out.println("--------------");
        //5. 리스트의 0번 인덱스를 삭제
        mlist2.remove(0);
        //6. 리스트의 모든 값 출력
        for(int i=0; i<mlist2.size();i++) {
            mlist2.get(i).prt();
        }
        System.out.println("--------------");
        //7. 리스트의 모든값중 이름만 출력
        for(int i=0; i<mlist2.size();i++) {
            System.out.println(i+"번 인덱스: "+mlist2.get(i).name);
        }
    }
	}

시험 정리

  1. 클래스 정의(전역변수 선언, 메서드 정의)
  2. 객체생성
  3. 참조변수와 참조하기
  4. String 타입 객체의 메서드(equals, contains, indexOf)
  5. Scanner 객체
  6. 홀짝 구분하는 코드: 홀수면 홀수, 짝수면 짝수 출력

오후 실습
어제만든 마켓 관리 프로그램에서 배열을 리스트로 변경

메인 클래스

package Market;

public class MainMarket {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("물건관리 프로그램 시작");
        new GoodsManeger();
        System.out.println("물건관리 프로그램 종료");
    }

}

마켓 관리 클래스

package Market;

import java.util.ArrayList;
import java.util.Scanner;

public class GoodsManeger {
    ArrayList<Goods> gList = new ArrayList<>();
    Scanner in = new Scanner(System.in);

    GoodsManeger() {
        for (;;) {
            menu();
            String selMenu = in.nextLine();
            if (selMenu.equals("1")) {
                addGoods();
            } else if (selMenu.equals("3")) {
                listGoods();
            } else if (selMenu.equals("2")) {
                modGoods();
            } else if (selMenu.equals("4")) {
                delGoods();
            } else if (selMenu.equals("5")) {
                searchGoods();
            } else if (selMenu.equals("6")) {
                break;
            } else {
                System.out.println("잘못된 입력입니다.");
            }
        }
    }

    private void searchGoods() {
        System.out.println("검색할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = false;
        for (int i = 0; i < gList.size(); i++) {
            if (gList.get(i).name.equals(b)) {
                System.out.println(b + "와 같은 이름");
                gList.get(i).prt();
                flag = true;
                System.out.println("--------------");
            } else if (gList.get(i).name.indexOf(b) != -1) {
                System.out.println(b + "를 포함하는 이름");
                gList.get(i).prt();
                flag = true;
                System.out.println("--------------");
            }

        }
        if (flag == false) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void delGoods() {
        // TODO Auto-generated method stub
        System.out.println("삭제할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = true;
        for (int i = 0; i < gList.size(); i++) {

            if (gList.get(i).name.equals(b)) {
                gList.remove(i);
                System.out.println(b + "삭제 완료");
                flag = false;
            }

        }
        if (flag) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void modGoods() {
        // TODO Auto-generated method stub
        System.out.println("수정할 이름을 입력하세요");
        String b = in.nextLine();
        boolean flag = true;
        for (int i = 0; i < gList.size(); i++) {

            if (gList.get(i).name.equals(b)) {
                System.out.println("수량을 입력하세요");
                int newInt = in.nextInt();
                in.nextLine();

                gList.get(i).cnt = newInt;

                System.out.println("가격을 입력하세요");
                newInt = in.nextInt();
                in.nextLine();

                gList.get(i).price = newInt;
                flag = false;
            }

        }
        if (flag) {
            System.out.println("이름이 없습니다.");
        }
    }

    private void addGoods() {
        Goods newGoods = new Goods();
        System.out.println("이름 입력");
        String name = in.nextLine();
        System.out.println("아이디 입력");
        String id = in.nextLine();
        System.out.println("수량 입력");
        int cnt = in.nextInt();
        in.nextLine();
        System.out.println("단가 입력");
        int price = in.nextInt();
        in.nextLine();

        newGoods.setting(name, id, cnt, price);

        gList.add(newGoods);

    }

    private void listGoods() {
        for (int i = 0; i < gList.size(); i++) {

            System.out.println(i + "번 정보-------");
            gList.get(i).prt();
            System.out.println("------------");

        }

    }

    private void menu() {
        // TODO Auto-generated method stub
        System.out.println("1. 물건등록");
        System.out.println("2. 물건수정");
        System.out.println("3. 전체보기");
        System.out.println("4. 물건삭제");
        System.out.println("5. 물건검색");
        System.out.println("6. 프로그램 종료");
    }
}

물건정보 클래스

package Market;

public class Goods {
    String name = null;
    String id = null;
    int cnt = 0;
    int price = 0;

    public void setting(String name, String id, int cnt, int price) {
        this.name = name;
        this.id = id;
        this.cnt = cnt;
        this.price = price;
    }

    public void prt() {
        System.out.println("이름: " + this.name);
        System.out.println("아이디: " + this.id);
        System.out.println("수량: " + this.cnt);
        System.out.println("가격: " + this.price);
    }
}
profile
공부하는 개발자

0개의 댓글