코딩 공부/개념정리
Java_개행문자?
챠나
2023. 4. 5. 13:24
수업 과제 중 레시피를 입력하는 과제가 있었다.
- 입력값
- 내가 좋아하는 요리 제목을 먼저 입력합니다.
- 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해주세요. (ex. 3.5)
- 이어서 내가 좋아하는 요리 레시피를 한문장씩 10문장을 입력합니다.
- 출력값
- 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
- 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해줍니다. (ex. 3)
- 바로 뒤에 정수별점을 5점만점 퍼센트로 표현했을때 값을 실수로 출력해줍니다. (ex. 60.0%)
- 이어서, 입력한 모든 문장앞에 번호를 붙여서 모두 출력 해줍니다.
[ 백종원 돼지고기 김치찌개 만들기 ]
별점 : 4 (80.0%)
1. 돼지고기는 핏물을 빼주세요.
2. 잘익은 김치 한포기를 꺼내서 잘라주세요.
3. 냄비에 들기름 적당히 두르고 김치를 넣고 볶아주세요.
4. 다진마늘 한스푼, 설탕 한스푼 넣어주세요.
5. 종이컵으로 물 8컵 부어서 센불에 끓여주세요.
6. 핏물 뺀 돼지고기를 넣어주세요.
7. 된장 반스푼, 양파 반개, 청양고추 한개를 썰어서 넣어주세요.
8. 간장 두스푼반, 새우젓 두스푼, 고춧가루 두스푼반 넣어주세요.
9. 중불로 줄여서 오래 끓여주세요~!!
10. 마지막에 파 쏭쏭 썰어서 마무리하면 돼요^^
출력이 이렇게 되어야 하는데
자꾸 1. 문장이 빈칸으로 나오는 것이다...
알고보니 sc.nextFloat의 문제였고
nextLine이 아닌 next로 하게되면 1.에 텍스트가 나오지만 띄워쓰기를 인식하지 못해 다음줄로 내려가는 현상이 반복....
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String title = sc.nextLine();
float rate = sc.nextFloat();
sc.skip("[\\r\\n]+");
String input1 = sc.nextLine();
그래서 저번 조원에게 도움을 요쳥해 해결한 방법이 '개행문자' 였다.
이유가 첫번째 float만 입력을 받고 그다음 nextLine() 부분을 Skip하는 경우라고 했다.
그래서 nextfloat()에서 Enter를 칠때 발생하는 '개행문자'를 처리하지않고 버퍼에 남기기 때문이라고 한다.
수업시간에도 배운적이 없고 답안해설에도 안알려주던 내용이었는데.... 황당,,ㅎ
어쨋든 이렇게 또 새로운 지식 +1 얻게되었다.