TIL)프로그래밍 기초_23.06.01(개인과제!)

주민·2023년 6월 1일
0

TIL

목록 보기
10/84

어제 끝날때쯤 피드백을 받으러 갔었는데 절차 지향적이란 얘길 들어 다시 엎었다...
TIL 작성법

문제(java)

가상의 메뉴판을 하나 만들고 상품을 선택하여 주문하기, 취소하기에 기능을 가진 키오스크 만들기

  • 메인 메뉴판 -> 상품 메뉴판 -> 구매화면 -> 주문화면 -> 주문완료 화면 -> 주문취소 화면
  • 필수 요구사항
    - 메뉴 클래스는 이름, 설명 필드를 가지는 클래스로 만들어주세요.
    - 상품 클래스는 이름, 가격, 설명 필드를 가지는 클래스로 만들어주세요.
    - 상품 클래스의 이름, 설명 필드는 메뉴 클래스를 상속받아 사용하는 구조로 개발해주세요.
    - 주문 클래스도 만들어서 상품 객체를 담을 수 있도록 해주세요.

문제풀기

  • 클래스는 크게 두가지로 나뉜다 => 데이터 or 실행 파일
  • 출력할 필드 setter, getter 각각 선언
  • list로 만들어 get으로 출력
  • 각 화면을 print로 만들고 선택해야하는 부분은 Scanner를 사용하기
  • 다른 화면으로 이동은 페이지별 메서드 만들어서 main에서 호출
  • 선택지가 많은 경우 swich문 사용
  • 메뉴 클래스(부모), 상품 클래스(자식) 으로 선언한 필드 상속
  • 기본 클래스 메뉴,상품,주문에 출력용으로 스크린,키오스크 추가하여 진행

각 메뉴를 print로 만들고 이동시 필요한 정보(input)은 scanner로 받아서 정보에 따라 맞는 페이지를 출력한다.

++ 메뉴판 내용을 매개변수 -> List로 출력하기로 했다.


오류 & 해결
  1. menu 클래스를 필드 선언 + 메서드를 만드니 다른 클래스에서 인스턴스 할 때 기존과 동일하게(Menu menu = new Menu();) 하면 오류가 난다
    Menu(int num, String name,String detail) {
        this.num = num;
        this.name = name;
        this.detail = detail;
    }

IDE 오류 내용 확인해보고 따로 문의해보니 Menu 클래스에서 선언한 대로 괄호 안에 값을 넣어줘야 하는 거였다, 아래와 같이 수정 완료

Menu menu = new Menu(0,"coffee",0.0,"detail");

  1. 메뉴 고르기& 데이터 List에 저장을 반복문으로 실행하고 밖에 getName을 출력하는데 계속 있을 수 없는 코드라고 나온다. get, set을 해보는게 처음이라 이 문제인줄 알고 get 출력 방법을 찾아봤다. get은 아무리 봐도 문제가 없는 거 같아서 튜터님께 문의 해봤다.
    이유는 while(true) 로 넣고 break를 하지 않아 무한 반복을 하니 다음으로 넘어가지 않고 다음 코드가 실행되지 않는 거였다;; 반복문 탈출하니 바로 출력된다.
while (true){
	System.out.println("1메뉴 선택, 2메뉴 출력, 3종료");
     .....
     if(userInput == 3 ){
     break;
     }
}
System.out.println(menu.getName());
-> 1번에서 입력한 값이 나옴
 

  1. 리스트 for 문으로 출력하려는데 강의 때 들었던 아래 방식으로는 주소
    만 나온다. 값이 하나만 들어있던 예제와 달리 name, detail,price 등으로 여러개 들어있어서 그런 듯하다. 또 열심히 검색을 해봤다.
System.out.println(linkedList.get(2));
System.out.println(linkedList.toString())

단순하게 뒤에 출력 원하는 필드명을 붙이면 된다.(orderList.get(1).name) 리스트 출력은 반복문을 돌리면 되는데 1번은 필드명을 다 붙여서 출력하고
2번은 필드이름으로 다시 선언해서 출력하는 방법이다.
같은 데이터를 여러번 가져다쓰는 경우에는 2번, 그렇지 않는 경우에는 1번을 쓰면 좋을 것 같다.

 *1 
for(int i =0; i<orderList.size(); i++) {
    System.out.println(orderList.get(i).name + "|" + orderList.get(i).price + "|" + orderList.get(i).detail);
}

*2
String name = orderList.get(0).name;
double price = orderList.get(0).price;
String detail = orderList.get(0).detail;

for(Menu val: orderList){
System.out.println(val.name + "|" + val.detail);
}

알게 된 점

  1. 기본 인스턴스는 () <- 빈괄호인데 Menu 클래스에서 public Menu로 선언한 값에 자료형이 들어있으면 맞춰 줘야한다

  2. 오류가 나는 이유에는 정말 다양한 이유가 있다(코드 오류, 위에서 다음으로 넘어가지 않음, 참조된 코드 오류 등등)

  3. 한줄에 값이 여러개 들어가 있는 리스트 출력 방법!
    System.out.println(orderList.get(0).name(각 필드명));

    String name = orderList.get(0).name;
    System.out.println(name);

0개의 댓글

관련 채용 정보