4주차는 이틀 동안 바짝하다가 완성하지 못한 채 이주가 지났었는데, 지금에서야 완성했다. 회고라고 하기도 너무 늦었지만 해보려고 한다.
지난 일주일 간(?) 있었던 일
일주일 간이라고 하면 양심이 없는 거 같지만,,, 그냥 아무것도 하지 않았다,,,롤만 했던 것 같다 허허 😭 왠지 모르게 프리코스 끝나고 코딩에 흥미가 뚝,,, 어김없는 진로 고민,,,등등 😩 그래도 이렇게 붙잡고 완성시켜야겠다는 마음 가짐은 있었다. 그거라도 잘했다고 해주고 싶다.
꺾이지 않는 마음??? 모 그런거,,
느낀 점
확실히 저번 주차보다 확 난이도가 올랐다고 느꼈다. 나야 아직 3학년이고 프리코스 참여했을 때부터 체험(?) 해보고 싶다는 생각이였기에 이번 4주차는 별로 공을 들이지 않은 것 같다. 드디어 놓아주는 구나..(?) 라고 생각이 들었다. 그리고 다른 진심인 사람들 보다는 진지하게 임한 건 아니라고 생각한다...ㅎㅎ 우테코 디스코드 보면 열심히 하는 사람들 진짜 많았는데 다들 조은 결과가 있길 바라며!! 나는 그냥 참여했다는 거에 의의를 두고 더 발전하고자 한다. 따봉 우테코야 고마웠어 👍
배운 점
코드를 직접 쳐보면서 어떻게 코드를 짤지 엄청 고민하면서 짰다. 함수가 너무 길면 우테코 규칙대로 15줄이상 쓰지 않으려고 노력했다. 그렇지만 inputViews는 굳이 함수를 따로 나누는게...맞을까? 싶어서 그냥 뒀다. 함수는 무조건 짧으면 좋은거겠지..? 이것도 좀 의문이다. 그래도 우테코 규칙대로 해보자! 싶어서 나눠는 봤다.
public List<Menu> orderMenu(){
System.out.println("주문하실 메뉴를 메뉴와 개수를 알려 주세요. (e.g. 해산물파스타-2,레드와인-1,초코케이크-1)");
String input = Console.readLine();
List<Menu> inputMenus = new ArrayList<>();
checkInputForm(input);
String [] inputs = input.split(","); // [해산물파스타-2, 레드와인-1, … ]
List<Menu> orderedMenu = new ArrayList<>();
pushMyMenu(inputs, orderedMenu);
isMaxOrder(orderedMenu);
checkOrderBeverageOnly(orderedMenu); // 만약 주문한 메뉴 = 1개인데, 음료일 경우.
return orderedMenu;
}
public void pushMyMenu(String[] inputs, List<Menu> orderedMenu) {
for(int i = 0; i< inputs.length; i++) { //주문한 메뉴 넣는 작업
String[] menuAndQuantity = inputs[i].split("-"); // [해산물파스타, 2]
checkOrderMaxQuantity(menuAndQuantity);
Menu menu = menuPan.findMenu(menuAndQuantity[0]);
menu.setQuantity(Integer.parseInt(menuAndQuantity[1]));
orderedMenu.add(menu);
}
}
public void checkInputForm(String input) {
if(!input.contains("-")){ // 메뉴 형식을 잘못한 경우
throw new IllegalArgumentException("[ERROR](e.g. 해산물파스타-2,레드와인-1,초코케이크-1)와 같이 -와 ,를 포함해 입력해야 합니다.");
}
}
public void checkOrderMaxQuantity(String[] menuAndQuantity) {
if (Integer.parseInt(menuAndQuantity[1]) < 1) {
throw new IllegalArgumentException("[ERROR] 하나 이상 주문해야 합니다.");
}
}
public void checkOrderBeverageOnly(List<Menu> orderedMenu) {
if (orderedMenu.size() == 1) { // 만약 주문한 메뉴 = 1개 && 음료일 경우
if (orderedMenu.get(0).getCategory().equals(Category.BEVERAGE))
throw new IllegalArgumentException("[ERROR] 음료만 주문할 수 없습니다.");
}
}
public void isMaxOrder(List<Menu> orderedMenu){
int quantity = 0;
for(int i=0; i<orderedMenu.size();i++){
quantity += orderedMenu.get(i).getQuantity();
}
if(quantity>=21){
throw new IllegalArgumentException("[ERROR] 메뉴는 한 번에 최대 20개까지만 주문할 수 있습니다.");
}
}
진짜진짜진짜 이상하게 코드를 짜고...하긴했지만 나름 줄였다. 커멘트+옵션+m 쓰니깐 메소드로 바로 바꿔줘서 너무 편하다...고마워 따봉 인텔리제이야... 테스트는 왜 통과 못하는 지 모르곘지만! 그래도 뿌듯하당,,, 많이 배워간거 같아서 진짜 좋다. 참여하길 잘했다고 생각한다.
그리구 저 코드 짜면서 느낀건데, 처음에 date 받을 때 1. 먼저 정수인지 검사함. 2. 범위 안에 드는지 검사함 두 개의 기능을 나눴어야 했는데 그거도 수정해따..
public int readDate(){
System.out.println("12월 중 식당 예상 방문 날짜는 언제인가요? (숫자만 입력해 주세요!)");
String input = Console.readLine();
if(!isNumeric(input)){
throw new IllegalArgumentException("[ERROR] 유효하지 않은 날짜입니다. 다시 입력해 주세요.");
}
int date = Integer.parseInt(input);
if(1>date || 31<date){
throw new IllegalArgumentException("[ERROR] 유효하지 않은 날짜입니다. 다시 입력해 주세요.");
}
return date;
}
public boolean isNumeric(String str){
return str!= null && str.matches("[0-9]+");
}
https://www.freecodecamp.org/korean/news/java-string-to-int-how-to-convert-a-string-to-an-integer/
자바에서 문자열을 int로 바꾸기 - 문자열(string)을 정수(integer)로 바꾸는 법
문자열 객체(object)들은 문자들의 열로 표현된다. 스윙(Java Swing)을 써 본 사람이라면, 거기에 있는 그래픽 사용자 인터페이스에서 입력 값을 가져오기 위해 JTextField나 JTextArea같은 컴포넌트가 쓰
www.freecodecamp.org
요 글을 참고했다. ㅎㅎ 저렇게 나눠놓으니까 물론물론 더 잘 짤 수 있는 방법이 있겠지만, 깔끔해서 보기 좋았다.
앞으로
우테코가 끝나버린 지금 무엇을 해야할지는 아주아주 명확하다,,학교 공부를 잘 하는 것이다^___^ 어쨌든 간 나는 아직 졸업을 못한 아기 컴공생이니까 졸프도 열심히 하고...ㅎㅎ 남과 비교하지 않고 혼자 천천히 걸어가야지. 하루 하루 배우는 게 늘어간다고 생각해야겠다.
'ETC > 2023 우테코 프리코스' 카테고리의 다른 글
[1회차] 1회차 숫자 야구게임 리팩토링 (0) | 2023.12.05 |
---|---|
[3주차 피드백] getter를 사용하는 대신 객체에 메세지를 보내자. (0) | 2023.12.04 |
3주차 기능 구현 (0) | 2023.11.08 |
2주차 회고 (0) | 2023.11.07 |
회고 작성 법 가이드라인 (0) | 2023.11.07 |