TIL (Today I Learned)

TIL) Scanner 사용해서 값 출력하기!

Won's log 2023. 5. 23. 20:46

TIL 기준

1. 어떤 문제가 있었는지

2. 내가 시도해 본 것들

3. 어떻게 해결했는지

4. 뭘 새롭게 알았는지

=문시해알

오늘은 2가지 문제에 봉착하여 이를 해결한 과정을 적었다

 

[1] 불필요한 코드는 삭제하자

자바 문법 강의에서 기초 중에 기초인 형변환 실습을 하고 있는데 값이 안 나왔다

    public static void main(String[] args) {
        // double or float형 -> int
        // 실수 -> 정수 (0.xxx -> 0)
        double doubleNumber = 10.1010;
        float floatNumber = 10.10010f;
//      정수 - > 실수
        int intNumber = 10;
        double doubleNumber = (double)intNumber;
        float floatNumber = (float)intNumber;

        System.out.println("intNumber => " + intNumber);
        System.out.println("doubleNumber => " + doubleNumber);
        System.out.println("floatNumber =>"  + floatNumber);

에러 메시지는 java: variable doubleNumber is already defined in method main(java.lang.String[])

무슨 소린지 싶었는데 doubleNumber이 여러 개라고 해서 코드를 살펴보니 이전 실습에서 했던 코드가 아직 살아있어서

실습한 코드를 지웠더니 잘 실행되었다

// 지운 코드
double doubleNumber = 10.1010;
float floatNumber = 10.10010f;

[2] Scanner로 값 받기!

scanner 사용법을 배웠음에도 적용을 안 했다! 이 바보!

실습 문제

//        - 입력값
//                - 내가 좋아하는 요리 제목을 먼저 입력합니다.
//                - 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해주세요. (ex. 3.5)
//        - 이어서 내가 좋아하는 요리 레시피를 한 문장씩 10문장을 입력합니다.
//        - 출력값
//                - 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
//        - 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해줍니다. (ex. 3)
//        - 바로 뒤에 정수별점을 5점 만점 퍼센트로 표현했을 때 값을 실수로 출력해줍니다. (ex. 60.0%)
//        - 이어서, 입력한 모든 문장 앞에 번호를 붙여서 모두 출력해줍니다.

그래서 말 그래도 println으로 모든 출력값을 수동으로 처리해 버림

import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {

        String food = "라면";
        float score = 4.5f;
        String recipe1 = "물을 준비한다";
        String recipe2 = "물 500ml가 맞는지 확인한다";
        String recipe3 = "가스레인지에 냄비를 두고 물을 따른다";
        String recipe4 = "물을 끓는다";
        String recipe5 = "물이 끓으면 라면스프와 라면을 넣는다";
        String recipe6 = "라면이 익을 때까지 기다린다";
        String recipe7 = "라면이 익으면 불을 끈다";
        String recipe8 = "라면을 예쁜 접시에 옮긴다";
        String recipe9 = "김치를 사이드로 놓는다";
        String recipe10 = "맛있게 먹는다";

        System.out.println("1."+food);
        int intScore;
        intScore = (int)score;
        System.out.println("2."+intScore);
        float floatScore;
        floatScore = 20*intScore;
        System.out.println("3."+floatScore + "%");
    }
}

그랬더니 답안체크를 위해 해설강의를 봤더니 오마이 굳네스....개발자의 역할을 매우 잊고 실행했음을 깨달았다

console로 나오는 내역에 입력을 하면 결과가 나오는 코드를 짜라고 했더니 println으로 출력을 하고 있었다

더군다나 '입력한 모든 문장 앞에 번호를 붙여서 모두 출력해줍니다.'라는 질문에 일일이 넌버링을 하고 있었다, 맙소사.

구석기시대에서 살다 온 사람인 줄 알 겄네

어쨌든, 강사님이 Scanner 메서드를 알려주시면서 scanner를 통해 값을 입력하는 법을 알려주셨고 유용하게 써야겠다는 생각이 들었다

        Scanner sc = new Scanner(System.in);
//        - 입력값
//        - 내가 좋아하는 요리 제목을 먼저 입력합니다.
        String title = sc.nextLine();
//        - 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해주세요. (ex. 3.5)
        float rate = sc.nextFloat();
//        - 이어서 내가 좋아하는 요리 레시피를 한 문장씩 10문장을 입력합니다.
        String input1 = sc.nextLine();
        String input2 = sc.nextLine();
        String input3 = sc.nextLine();
        String input4 = sc.nextLine();
        String input5 = sc.nextLine();
        String input6 = sc.nextLine();
        String input7 = sc.nextLine();
        String input8 = sc.nextLine();
        String input9 = sc.nextLine();
        String input10 = sc.nextLine();

//        - 출력값
//         - 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
        System.out.println("[" + title + "]");
//        - 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해줍니다. (ex. 3)
        int intRate = (int) rate;
//        - 바로 뒤에 정수별점을 5점만점 퍼센트로 표현했을 때 값을 실수로 출력해줍니다. (ex. 60.0%)
        double percetageRate = intRate / 5.0 * 100;
        System.out.println(percetageRate);
//        - 이어서, 입력한 모든 문장 앞에 번호를 붙여서 모두 출력 해줍니다.
        System.out.println("1." + input1);
        System.out.println("2." + input2);
        System.out.println("3." + input3);
        System.out.println("4." + input4);
        System.out.println("5." + input5);
        System.out.println("6." + input6);
        System.out.println("7." + input7);
        System.out.println("8." + input8);
        System.out.println("9." + input9);
        System.out.println("10." + input10);
    }}

교훈 : 배웠는데도 왜 못 써먹니. 다음에는 꼭 scanner를 사용하자


개발용어 익숙해지기

	//  ""는 문자형이 아닌 문자열로 인식
        // sout = System.out.println()
        // CamelCase로 변수 이름을 많이 짓는다 예) byteNumber
        // 변수를 가져다 쓴다 = 참조한다