Java 문법 강의에서 주차별 숙제를 내준다.
그런데 숙제를 다시 해야한다.....
공부를 하다보니 숙제에서 요구했던 대로 코딩 하지 않았다는 걸 깨달았다.
용어가 낯설다보니 나 편한대로 생각했다.
1주차 숙제
-요구 사항 :
입력값
- 내가 좋아하는 요리 제목을 먼저 입력합니다.
- 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해 주세요. (ex. 3.5)
- 이어서 내가 좋아하는 요리 레시피를 한 문장씩 10문장을 입력합니다.
출력값
- 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
- 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해 줍니다. (ex. 3)
- 바로 뒤에 정수 별점을 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력해 줍니다. (ex. 60.0%)
- 이어서, 입력한 모든 문장 앞에 번호를 붙여서 모두 출력해 줍니다.
1주차에 내가 작성한 코드.
더보기
public class Main {
public static void main(String[] args){
String title = "백종원 돼지고기 김치찌개 만들기";
float floatStarRecord = 4.5f;
int intStarRecord = (int)floatStarRecord;
float perStarRecord = intStarRecord*20;
String step1 = "돼지고기는 핏물을 빼주세요.";
String step2 = "잘익은 김치 한포기를 꺼내서 잘라주세요.";
String step3 = "냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.";
String step4 = "다진마늘 한스푼, 설탕 한스푼 넣어주세요.";
String step5 = "종이컵으로 물 8컵 부어서 센불에 끓여주세요.";
String step6 = "핏물 뺀 돼지고기를 넣어주세요.";
String step7 = "된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.";
String step8 = "간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.";
String step9 = "중불로 줄여서 오래 끓여주세요~!!";
String step10 = "마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^";
System.out.println("["+ title +"]");
System.out.print("별점: " + intStarRecord);
System.out.println("(" + perStarRecord + "%" + ")");
System.out.println(step1);
System.out.println(step2);
System.out.println(step3);
System.out.println(step4);
System.out.println(step5);
System.out.println(step6);
System.out.println(step7);
System.out.println(step8);
System.out.println(step9);
System.out.println(step10);
}
}
수정(이라 쓰고 재작성)한 코드
더보기
public class Main {
public static void main(String[] args) {
Scanner inputTitle = new Scanner(System.in);
System.out.println("요리 제목을 입력하세요: ");
String title = inputTitle.nextLine();
Scanner inputRecord = new Scanner(System.in);
System.out.println("요리 점수를 1~5점 입력하세요: ");
double record = inputRecord.nextDouble();
int perRecord = (int) record*20;
System.out.println("[" + title + "]");
System.out.println("별점: " + record + "(" + perRecord + "%" + ")");
System.out.println("레시피를 입력하세요");
Scanner recipe1 = new Scanner(System.in);
String reCipe1 = recipe1.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe2 = new Scanner(System.in);
String reCipe2 = recipe2.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe3 = new Scanner(System.in);
String reCipe3 = recipe3.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe4 = new Scanner(System.in);
String reCipe4 = recipe4.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe5 = new Scanner(System.in);
String reCipe5 = recipe5.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe6 = new Scanner(System.in);
String reCipe6 = recipe6.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe7 = new Scanner(System.in);
String reCipe7 = recipe7.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe8 = new Scanner(System.in);
String reCipe8 = recipe8.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe9 = new Scanner(System.in);
String reCipe9 = recipe9.nextLine();
System.out.println("레시피를 입력하세요");
Scanner recipe10 = new Scanner(System.in);
String reCipe10 = recipe10.nextLine();
System.out.println("1. " + reCipe1);
System.out.println("2. " + reCipe2);
System.out.println("3. " + reCipe3);
System.out.println("4. " + reCipe4);
System.out.println("5. " + reCipe5);
System.out.println("6. " + reCipe6);
System.out.println("7. " + reCipe7);
System.out.println("8. " + reCipe8);
System.out.println("9. " + reCipe9);
System.out.println("10. " + reCipe10);
System.out.println("끝");
}
}
느낀 점 :
1. Scanner를 활용하는 게 주안점인 것 같다.
2. 별점 퍼센트를 구하기 위해 강제 형변환을 썼는데 강제 형변환 없이 어떻게 구현할 수 있을까?
-> 자세히 보니 %부분을 double 처리 했다. 강제 형변환 하지 않고 double 타입으로 저장했어도 됐다.
3. 마지막에 중복된 코드가 너무 많다. 어떻게 정리할 수 있을까?
-> 자료구조를 사용한다. 2주차 숙제로 나온 내용.
2주차 숙제 :
-요구 사항
입력값
- 저장할 자료구조명을 입력합니다. (List / Set / Map)
- 내가 좋아하는 요리 제목을 먼저 입력합니다.
- 이어서 내가 좋아하는 요리 레시피를 한 문장씩 입력합니다.
- 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.
출력값
- 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
- 이어서, 입력한 모든 문장 앞에 번호를 붙여서 입력 순서에 맞게 모두 출력해 줍니다.
더보기
import java.util.ArrayList;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner inputColName = new Scanner(System.in);
System.out.println("저장할 자료구조명을 입력하세요: ");
String colName = inputColName.nextLine();
Scanner inputTitle = new Scanner(System.in);
System.out.println("요리 제목을 입력하세요: ");
String title = inputTitle.nextLine();
System.out.println("1. 레시피를 입력하세요");
Scanner recipe1 = new Scanner(System.in);
String reCipe1 = recipe1.nextLine();
System.out.println("2. 레시피를 입력하세요");
Scanner recipe2 = new Scanner(System.in);
String reCipe2 = recipe2.nextLine();
System.out.println("3. 레시피를 입력하세요");
Scanner recipe3 = new Scanner(System.in);
String reCipe3 = recipe3.nextLine();
System.out.println("4. 레시피를 입력하세요");
Scanner recipe4 = new Scanner(System.in);
String reCipe4 = recipe4.nextLine();
System.out.println("5 .레시피를 입력하세요");
Scanner recipe5 = new Scanner(System.in);
String reCipe5 = recipe5.nextLine();
System.out.println("6. 레시피를 입력하세요");
Scanner recipe6 = new Scanner(System.in);
String reCipe6 = recipe6.nextLine();
System.out.println("7. 레시피를 입력하세요");
Scanner recipe7 = new Scanner(System.in);
String reCipe7 = recipe7.nextLine();
System.out.println("8. 레시피를 입력하세요");
Scanner recipe8 = new Scanner(System.in);
String reCipe8 = recipe8.nextLine();
System.out.println("9. 레시피를 입력하세요");
Scanner recipe9 = new Scanner(System.in);
String reCipe9 = recipe9.nextLine();
System.out.println("10. 레시피를 입력하세요");
Scanner recipe10 = new Scanner(System.in);
String reCipe10 = recipe10.nextLine();
System.out.println("입력을 마쳤으면 끝을 입력하세요: ");
Scanner inputEnd = new Scanner(System.in);
String endName = inputEnd.nextLine();
ArrayList<String> strArrayRecipe = new ArrayList<String>();
strArrayRecipe.add(reCipe1);
strArrayRecipe.add(reCipe2);
strArrayRecipe.add(reCipe3);
strArrayRecipe.add(reCipe4);
strArrayRecipe.add(reCipe5);
strArrayRecipe.add(reCipe6);
strArrayRecipe.add(reCipe7);
strArrayRecipe.add(reCipe8);
strArrayRecipe.add(reCipe9);
strArrayRecipe.add(reCipe10);
strArrayRecipe.add(endName);
System.out.println("[ " + colName + " 으로 저장된 " + title + " ]");
for (int j=0; j<strArrayRecipe.size(); j++){
System.out.println((j+1) + ". " + strArrayRecipe.get(j));
if (j == (strArrayRecipe.size() -2 )){
break;
}
}
}
}
느낀 점 :
1. 코드 중복을 줄이기 위해 레시피를 입력할 때 자료구조에 자동으로 추가되는 기능을 만들 수는 없을까?
2. List말고 Set를 써서 만들 수 있을까?
'Java > 기타' 카테고리의 다른 글
숫자 야구 게임 Lv 4 (14) | 2024.09.22 |
---|---|
숫자 야구 게임 Lv3 (0) | 2024.09.14 |
숫자 야구 게임 Lv2 (1) | 2024.09.13 |
숫자 야구 게임 Lv1 (1) | 2024.09.12 |
계산기 만들기 (0) | 2024.09.06 |