[TIL] 백엔드 부트캠프 2주차 (2024/07/22 월) Java 기초 문법 학습, nextFloat()/nextLine() 상호작용

2024. 7. 22. 12:25·TIL 🔖/TIL

💻Today's Schedule 

09:00 ~ 09:30 프로그래밍 기초 발제
09:30 ~ 11:40 개인 학습
11:40 ~ 12:10 팀미팅(튜터참여)
12:10 ~ 13:10 점심 식사
13:10 ~ 18:00 개인 학습
18:00 ~ 19:00 저녁 식사
19:00 ~ 21:00 개인 학습 

✍ Today I Learned

CODEKATA

  • SQL 문제 풀이 (35,36번)
  • Java 알고리즘은 강의 1회독 이후에 이어서 진행하는 것으로 변경

Java 문법

  • [Java 문법 종합반] 1주차 내용 정리
 

Java 문법 기초(1)

Chapter 1: 개발 언어 (Java)Java 란? 어디서나 마시는 커피처럼 어디서나 동작 가능한, 자바 커피에서 이름을 따서 만든 Java언어발표년대 : 1990'핵심기능 : C언어 기능 + 공통 실행환경, 클래스, 객체

fargoewave.tistory.com

 

  • [Java 문법 종합반] 1주차 숙제 풀이

요리 레시피 메모장 만들기

 

지시사항

입력값
내가 좋아하는 요리 제목을 먼저 입력합니다.
요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해 주세요. (ex. 3.5)
이어서 내가 좋아하는 요리 레시피를 한 문장씩 10문장을 입력합니다.

출력값
입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력해 줍니다.
이어서, 요리 별점을 소수점을 제외한 정수로만 출력해 줍니다. (ex. 3)
바로 뒤에 정수 별점을 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력해 줍니다. (ex. 60.0%)
이어서, 입력한 모든 문장 앞에 번호를 붙여서 모두 출력해 줍니다.

 

예시 입력 

백종원 돼지고기 김치찌개 만들기
4.5
돼지고기는 핏물을 빼주세요.
잘익은 김치 한포기를 꺼내서 잘라주세요.
냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.
다진마늘 한스푼, 설탕 한스푼 넣어주세요.
종이컵으로 물 8컵 부어서 센불에 끓여주세요.
핏물 뺀 돼지고기를 넣어주세요.
된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.
간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.
중불로 줄여서 오래 끓여주세요~!!
마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^

 

예시 출력:

[ 백종원 돼지고기 김치찌개 만들기 ]
별점 : 4 (80.0%)
1. 돼지고기는 핏물을 빼주세요.
2. 잘익은 김치 한포기를 꺼내서 잘라주세요.
3. 냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.
4. 다진마늘 한스푼, 설탕 한스푼 넣어주세요.
5. 종이컵으로 물 8컵 부어서 센불에 끓여주세요.
6. 핏물 뺀 돼지고기를 넣어주세요.
7. 된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.
8. 간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.
9. 중불로 줄여서 오래 끓여주세요~!!	
10. 마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^

 

- 1주차에서 배운 내용만 응용해서 풀이해보려고 했다. 

  • 레시피 별점
    • 입력 : 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력 (ex. 3.5)
    • 출력 : 소수점을 제외한 정수로만 출력(ex. 3) 뒤에 정수 별점을 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력(ex.60%) 
// 별점
float rate = sc.nextFloat();

// 별점 계산
int intRate = (int)rate;
double percentageRate = intRate * 100 / 5.0;

// 별점 출력
System.out.println("별점 :"+ intRate + "("+ percentageRate + "%)");
  1. float rate = sc.nextFloat();
    • 사용자가 입력한 별점을 float형 변수 rate에 저장, nextFloat() 메서드는 float형 데이터를 읽어온다.
  2. int intRate = (int)rate;
    • float형 변수 rate를 int형으로 변환하여 intRate에 저장한다. 소수점 이하 자리는 버려지고 정수 부분만 저장된다.
  3. double percentageRate = intRate * 100 / 5.0;
    • 별점을 백분율로 변환. 별점은 1에서 5 사이의 값이므로 이를 5로 나누고 100을 곱하여 백분율로 변환한다.
    • 별점이 4.5일 경우 intRate는 4가 되고, percentageRate는 4 * 100 / 5.0 = 80.0이 됨.
  4. System.out.println("별점 :" + intRate + "(" + percentageRate + "%)");
    • 별점을 정수형과 백분율 형태로 출력. 예시의 출력값대로 작성했다. 
  • 이렇게 작성해서 출력했을 때 한가지 오류가 발생했는데, 전체 코드는 아래와 같다. 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //제목
        String title = sc.nextLine();
        //별점
        float rate = sc.nextFloat();

        //레시피
        String recipe1 = sc.nextLine();
        String recipe2 = sc.nextLine();
        String recipe3 = sc.nextLine();
        String recipe4 = sc.nextLine();
        String recipe5 = sc.nextLine();
        String recipe6 = sc.nextLine();
        String recipe7 = sc.nextLine();
        String recipe8 = sc.nextLine();
        String recipe9 = sc.nextLine();
        String recipe10 = sc.nextLine();


        int intRate = (int)rate;
        double percentageRate = intRate * 100 / 5.0;


        System.out.println("[" + title + "]");
        System.out.println("별점 :"+ intRate + "("+ percentageRate + "%)");
        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);
    }
}

  • 별점은 예시와 같게 출력했으나, nextFloat() 호출 후에 nextLine() 를 호출 하면, recipe1에 의도한 입력이 아닌 문자열이 저장되는 문제가 발생해 레시피가 한줄씩 밀렸다. 
  • nextFloat()는 실수형 입력을 읽으나 숫자 뒤에 오는 줄바꿈 문자를 소비하지 않기 때문에 nextFloat() 호출 이후에 nexLine()메서드를 호출 해 입력한 문자열을 읽기 전에 남아 있는 줄바꿈 문자를 먼저 읽게 된다. 
  • 때문에 아래와 같이 수정해 위 문제의 코드를 완성했다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //제목
        String title = sc.nextLine();
        //별점
        float rate = sc.nextFloat();
        //줄바꿈문자처리
        sc.nextLine();

        //레시피
        String recipe1 = sc.nextLine();
        String recipe2 = sc.nextLine();
        String recipe3 = sc.nextLine();
        String recipe4 = sc.nextLine();
        String recipe5 = sc.nextLine();
        String recipe6 = sc.nextLine();
        String recipe7 = sc.nextLine();
        String recipe8 = sc.nextLine();
        String recipe9 = sc.nextLine();
        String recipe10 = sc.nextLine();


        int intRate = (int)rate;
        double percentageRate = intRate * 100 / 5.0;


        System.out.println("[" + title + "]");
        System.out.println("별점 :"+ intRate + "("+ percentageRate + "%)");
        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);

        sc.close();
    }
}

 

예시는 귀찮아서 안바꿨다. 암튼 완성~ 


📝 회고 

프로그래밍 기초 주차가 시작되었다.

새로운 팀과 팀원을 만났고, 약간은 어수선한 느낌으로 하루가 끝났다.
이제 정말 본격적인 캠프의 시작인데 프로젝트가 끝나서 그런지 집중이 잘 안된다.
그리고 문법적인 내용을 학습하다 보니 어렵고 지루하게 느껴진다. 
그래도 온보딩주차에 개발 리스닝이 안돼서 어려움을 많이 느꼈는데 
강의를 수강하고 프로젝트를 진행하다보면 이 문제는 점차 해결되지 않을까 싶다. 

오늘들은 1주차 강의도 내일 다시 복습해야겠다. (하루종일 졸고 제정신이 아니었다~^^..)

🔖 Tomorrow's Goal

  • Java 문법 강의 1주차 복습
  • Java 문법 강의 2주차 듣고 정리하기 
  • CODEKATA SQL 2문제

 

'TIL 🔖/TIL' 카테고리의 다른 글
  • [TIL] 백엔드 부트캠프 3주차 (2024/07/30 화) 계산기 만들기 Level 2
  • [TIL] 백엔드 부트캠프 2주차 (2024/07/23 화) Java 문법 학습, List/Set/Map
  • [TIL] 백엔드 부트캠프 1주차 (2024/07/19 금) CRUD 미니 프로젝트 : 프로젝트 발표, KPT 회고
  • [TIL] 백엔드 부트캠프 1주차 (2024/07/18 목) CRUD 미니 프로젝트 : Firebase 데이터 호출, FullCalendar 라이브러리
fargoe
fargoe
    fargoe
    fargoewave
    fargoe
    GitHub
    전체
    오늘
    어제
    • 분류 전체보기 (166)
      • TIL 🔖 (140)
        • TIL (69)
        • 코딩테스트 (71)
      • DEV (14)
        • Java & Spring (7)
        • MySQL (3)
        • Git&Github (4)
      • 개발지식 (10)
        • 알고리즘 (2)
        • 자료구조 (8)
        • CS (0)
      • 3D (1)
        • Unity (1)
      • ETC (0)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
fargoe
[TIL] 백엔드 부트캠프 2주차 (2024/07/22 월) Java 기초 문법 학습, nextFloat()/nextLine() 상호작용
상단으로

티스토리툴바