어제 풀던 2주차 문제 풀었다! 이어서 TIL 작성하려 한다.
TIL 작성법(업데이트함!)
강의내용정리-2주차
각 자료구조(List / Set / Map)를 입력 -> 요리제목 -> 레시피 -> 끝(종료)을 입력하면 아래와 같이 나오도록 하기
[List 요리제목]
1. 레시피
일단 swich문 밖에서 자료구조를 입력받고 그걸로 swich문 돌려준다.
그리고 반복문 써서 입력받아 리스트에 넣어주고 또 반복문으로 출력해주면 될 거 같다.
** 23.05.27 TIL 코드 => List case
ArrayList<String> strList = new ArrayList<>();
while (true) {
String text = sc.nextLine();
strList.add(text);
if (text.equals("끝")) {
break;
}
}
System.out.println("[ " + data + " " + strList.get(0) + " ]");
for (int i = 1; i < strList.size(); i++) {
System.out.println(i + ". " + strList.get(i));
}
break;
오류 & 해결
출력 글자 수를 맞췄음에도 "끝" 부분까지 출력이 된다. 처음 while문에서 입력을 하고 if문(break!)을 실행해서 "끝" 까지 추가된거 같다, 아래와 같이 위치를 바꾸니 해결됐다.
while (true) {
String text = sc.nextLine();
if (text.equals("끝")) {
break;
}
strList.add(text);
Set<String> strSet = new HashSet<String>();
System.out.println("[ " + data + " ");
for(String val :strSet ){
if(val.contains("]")){
System.out.println(val +" ]");
}
int num = 0;
num++;
System.out.println(num + " . "+val);
}
오류 & 해결
Set은 순서가 없어 0배열을 가져오기도 어려웠고 값 하나씩 직접 꺼낼 수가 없었다.(strSet[i] 이런 방법 불가) 그래서 음식제목을 titleSet으로 분리하고 출력하는 방법을 찾아 그걸로 바꿨다.
-> 순서대로 출력 : Iterator iterator = strSet.iterator();
String titleSet = sc.nextLine();
-- 입력 반복문 --
System.out.println("[ " + data + " " + titleSet + " ]");
// hashSet출력 위함
Iterator iterator = strSet.iterator();
for (int i = 0; i < strSet.size() - 1; i++) {
System.out.println(i + 1 + " . " + iterator.next());
}
Map<Integer, String> strMap = new HashMap<>();
// num의 값이 증가하지 않아 끝만 나옴
while (true) {
String text = sc.nextLine();
int num =0;
num++;
strMap.put(num, text);
if (text.equals("끝")) {
break;
}
}
System.out.println("[ " + data + " " + titleMap + " ]");
for (int i = 1; i < strMap.size(); i++) {
System.out.println(i + " . " + strMap.get(i));
}
오류 & 해결
num의 값이 증가하지 않아 마지막에 입력한 text만 나오는 문제가 생겼다.
적용안된 사유는 따로 확인해보고 우선 put안에서 ++가 들어가도록 수정했다.
-> 반복문 안에 선언과 ++를 같이해서 계속 1이 나온거였다,너무 당연한 내용이라 당황스럽다.
int number = 1;
while (true) {
String text = sc.nextLine();
strMap.put(number++, text);
if (text.equals("끝")) {
break;
}
}
or
int number = 0;
while (true) {
String text = sc.nextLine();
number++;
strMap.put(number, text);
if (text.equals("끝")) {
break;
}
}
//hasNext : iterator가 값을 뺴오는데 남은 값이 있으면 true 없으면 false를 출력
while(iterator.hasNext()) {
System.out.println(a + " . " + iterator.next());
b++;
}