Java/기타

1, 2주차 과제 다시 하기.

열심히 해 2024. 9. 7. 22:23

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