(내일배움캠프) TIL(2) - 2주차

Thomas·2023년 5월 23일
0
post-thumbnail

어제 내일배움캠프에서 준 자바기초 강의 2주차를 배우고 if, for, while, do while, continue, break, collection(List,Set,Map)을 배우고 배운 것을 문제를 풀어보는 시간을 가졌다

Problem 1

일단 자료구조 List, Set, Map중에 하나를 사용자가 골라서 그 자료구조에 레시피를 담는 문제였다
do while을 써서 사용자가 List, Set, Map이외의 것을 적으면
다시 적게 할려고 했다

do {
            System.out.println("저장할 자료구조명을 입력하세요 (List / Set / Map)");
            ds = sc.next();
} while(Condition);

Condition만 코드를 넣어서 다시 보겠습니다

} while(ds != "List" && ds != "Set" && ds != "Map");

Try

c++에 익숙했던 저는 위에 코드처럼 당연히 적고 돌렸는데 무한루프가 돌았습니다.
그래서 condition부분 조건이 내가 아는게 아닌가 해서 반대로 넣어봐도 해결을 하지 못했습니다. 결국 구글링에 do while법을 다시 찾아보는데

c++이랑 다르게 java는 string 클래스라서 참조형 변수였던 거라서 단순 비교는 못하는거였다...

Solution

그래서 수정 부분

} while(!"List".equals(ds) && !"Set".equals(ds) && !"Map".equals(ds));

하니 잘 된다...

결론

Java만의 String 특성을 다시 깨우친거 같다!!

Problem 2

저장할 자료구조를 치고 요리제목을 받아야 하는데 자꾸 개행이 안되는 문제가 있었다

System.out.println("저장할 자료구조명을 입력하세요 (List / Set / Map)");
ds = sc.next();
String recipe;
System.out.println("요리 제목을 입력해주세요");
String foodName = sc.nextLine();
System.out.println("요리 레시피를 한 문장씩 입력해주세요");
System.out.println("입력을 마치고 싶으면 '끝'을 적어주세요");

.next() 다음에 사용된 .nextLine()은 개행문자(엔터)때문에 안되는 것이였다
그래서 sc.nextLine(); 만 추가하면 해결되는 간단한 문제였다

요리제목 다음 라인에 유저가 타자칠수 있게 되었다

Problem 3

무한 while에 빠졌다

사실 빠진줄도 몰랐다 print를 찍어보니.. 무한 루프였다

이유는 단순하게도 입력을 받고 vaild 입력이 아니면 whill문으로 다시 입력을 받아주는건데 입력을 안 받아 주니 vaild 값이 무한적으로 도는거였다...

저는 c++를 주로 써서 Scanner를 안 쓰다보니 이번 문제에서 해맨거 같다!

최종결론

do while이랑 while이랑 차이점을 잘 알게 되었습니다
막상 문제를 푸니깐... 생각한 만큼 잘 안 되는거 같아서 놀랬다..
개념은 쉽고 다 아는거라고 쉽게 본거 같아
반성하는 시간을 가진거 같다

profile
Backend Programmer

0개의 댓글