후....뒤지는 줄 알았다....
import java.util.Scanner;
public class HomeWork {
public static void main(String[] args) {
//입력창
Scanner sc = new Scanner(System.in);
//요리 제목
System.out.println("요리 제목을 입력해주세요.");
String titleInput = sc.nextLine();
System.out.println("[요리 : " + titleInput + " ]");
//별점 입력값 제한하기, 퍼센트 바꾸기
while (true) {
System.out.println("별점을 작성해주세요.");
double starInput = sc.nextDouble();
double starRate = starInput * 100 / 5.0;
if (starInput < 0 || starInput > 5.0) {
System.out.println("0~5사이의 숫자를 입력해주세요.");
} else {
System.out.println("별점 : " + (int) starInput + "점 (" + starRate + "%)");
break;
}
}
//요리 순서 항목 만큼 자동으로
int i = 0;
System.out.println("<요리 레시피>");
sc.nextLine();
while (true) {
String howInput = sc.nextLine();
System.out.println((i+1) + ". " + howInput);
i++;
if (howInput.equals("끝")) {
break;
}
}
}
}
1. Scanner를 처음 배우고 처음 써봤다. import를 먼저 하고 난 후 Scanner를 통해 입력하고 출력할 때 ~~.next( ) 를 쓰면 띄어쓰기로도 구분이 되므로 띄어쓰기를 하고 싶다면 ~~nextLine( )을 사용하면 된다. 그리고 다른 데이터타입으로 값을 받고 싶으면 ~~.nextDouble( ) 처럼 관련 메서드가 있으니 그걸 사용하면 된다.
2. 별점 입력 값 제한하기에서 굉장히 많은 시간을 소모했다. 반복문들이 있는데 """반복문 안에 있는 것들을 반복한다."""는 핵심을 잘 생각했어야했다. 구현하고 싶은 기능은
1) 숫자를 입력하도록 한다(범위 0~5, 소수점 포함)
2) 범위를 벗어날 시 경고문을 출력하고
3) 다시 입력창을 보여준다
4) 0~5 사이의 숫자를 받기 전까지 위의 동작을 반복한다 였다.
이 과정을 반복하려면 '입력값을 받는 것' 또한 반복과정에 있는데 그것을 망각하고 반복문 바깥에 관련 코드를 작성해서 한참을 헤맸다. """반복문은 반복문 안에 있는 것들을 반복한다.""" 반복문 중 while문은 ( )안의 값이 참이면 계속해서 반복을 실행하니 목적을 달성하면 break를 통해서 while문을 벗어나자.
3. 마지막으로 요리 순서를 적는 것 부분이다. 이 부분은 요리 순서마다 자동으로 번호를 붙이고 작성하게끔 만들고 싶었다. 위의 코드처럼 작성을 마치고 나니 문제점이 생겼다. 요리 순서 1번 항목은 자동으로 계속 작성되었다. 즉 내가 작성할 수 있는 요리 순서는 2번부터였다.
이유를 쉽게 표현하자면 스캔 타입을 변경하면 전에 사용한 찌꺼기가 스캐너에 남게 되기 때문이다.
그렇기에 위에서 설명하는 큐에 남은 찌꺼기들을 제거하려면
스캐너메소드이름.nextLine();
으로 청소하자. 찾은 자료에서는 nextInt >> nextLine의 경우에만 해당되는 것처럼 나왔는데, 데이터타입이 변환될 때 모두 해당되는 것 같다. 필자는 nextDouble >> nextLine의 경우에 해당한다.
요리 순서 작성이 완료되면 .equals로 끝이라고 입력하면 해당 메서드를 종료하도록 했다.
[TIL#12] 내배캠 Chapter 2 프로그래밍 기초] 개인프로젝트 part.2 (0) | 2023.10.23 |
---|---|
[TIL#10-2 내배캠 Chapter 2 프로그래밍 기초] 개인프로젝트 part.1 (0) | 2023.10.18 |
[TIL#10-1 내배캠 Chapter 2 프로그래밍 기초] 숙제2 (1) | 2023.10.18 |
[TIL#7 내배캠 Chapter 2 프로그래밍 기초] 숙제1 심화 학습 (1) | 2023.10.15 |