내일배움캠프/TIL

JAVA 입문 _ 김영한의 자바 입문 강의 - Day 12[Scanner 훈련]

austindynasty 2024. 10. 31. 18:50

1. Scanner 

1)기본원리 이해를 위한 예제 

package scanner;

import java.util.Scanner;

public class Scanner1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); //Scanner 기능을 사용하기 위해 new를 사용해 scanner를 만듦.
        	                                  //System.in을 사용해 사용자의 입력을 편리하게 받는다.
                                                  //scanner 변수를 선언해 scanner를 사용할 수 있다.

        System.out.print("문자열을 입력하세요."); 
        String str = scanner.nextLine(); //입력을 String으로 가져온다.
        System.out.println("입력한 문자열 : " + str);

        System.out.print("정수를 입력하세요.");
        int intValue = scanner.nextInt(); //입력을 int로 가져옵니다.
        System.out.println("입력한 정수 : " + intValue);

        System.out.print("실수를 입력하세요.");
        double doubleValue = scanner.nextDouble(); //입력을 double로 가져옵니다.
        System.out.println("입력한 실수 : " + doubleValue);
    }
}
// 실행결과
입력한 문자열 : hello java
정수를 입력하세요.10
입력한 정수 : 10
실수를 입력하세요.1.5
입력한 실수 : 1.5

 

2) 연산에서 활용해보기

package scanner;

import java.util.Scanner;

public class Scanner2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("첫 번째 숫자를 입력하세요 : ");
        int num1 = scanner.nextInt();

        System.out.print("두 번째 숫자를 입력하세요 : ");
        int num2 = scanner.nextInt();

        int sum = num1 + num2;
        System.out.println("두 숫자의 합 = " + sum);
    }
}
//실행 결과
첫 번째 숫자를 입력하세요 : 10
두 번째 숫자를 입력하세요 : 20
두 숫자의 합 = 30

 

3) 조건문 활용하기

- 사용자로부터 두 개의 정수를 입력받고, 더 큰 수를 출력하는 프로그램을 작성하세요. 두 숫자가 같다면 같다고 출력하세요.

package scanner;

import java.util.Scanner;

public class Scanner3 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        System.out.print("첫 번째 숫자 : ");
        int num1 = scanner.nextInt();

        System.out.print("두 번째 숫자 : ");
        int num2 = scanner.nextInt();

        if (num1 > num2) {
            System.out.println("더 큰 숫자 : " + num1);
        } else if (num2 > num1) {
            System.out.println("더 큰 숫자 : " + num2);
        } else {
            System.out.println("두 숫자는 같다.");
        }
    }
}
// 실행 결과
첫 번째 숫자 : 15
두 번째 숫자 : 48
더 큰 숫자 : 48

첫 번째 숫자 : 15
두 번째 숫자 : 15
두 숫자는 같다.

 

3) 반복문 활용하기

package scanner;

import java.util.Scanner;

public class ScannerWhile1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        while (true) { //무한 반복되는 while문
            System.out.print("문자열을 입력하세요(exit.종료):");
            String str = scanner.nextLine();
            if (str.equals("exit")) {
                System.out.println("프로그램을 종료합니다.");
                break; // 조건을 만족할 때 빠져나가기

            }
            System.out.println("입력한 문자열 : " + str);
        }
    }
}

// 실행 결과
문자열을 입력하세요(exit.종료): 안녕하세요
입력한 문자열 :  안녕하세요
문자열을 입력하세요(exit.종료):exit
프로그램을 종료합니다.

- 사용자의 입력을 받아들이다가 특정 명령어 exit를 입력하면 프로그램을 종료하는 프로그램을 입력해봤다.

- 여기서 문자열을 입력하는 타입인 String이 사용되었기 때문에 if문에서 .equals 를 사용했다. 

 

[ 반복문 예제 1. ]

첫 번째 숫자와 두 번째 숫자를 더해 출력하는 프로그램을 작성하려고 할 때, 첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료하는 프로그램을 작성하세요. 

package scanner;

import java.util.Scanner;

public class ScannerWhile2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료합니다.");
        while (true) {
            System.out.print("첫 번째 숫자 : ");
            int num1 = scanner.nextInt();

            System.out.print("두 번째 숫자 : ");
            int num2 = scanner.nextInt();

            if (num1 == 0 && num2 == 0) {
                System.out.println("프로그램 종료");
                break;
            }

            int sum = num1 + num2;
            System.out.println("두 숫자의 합 : " + sum);
        }
    }
}
//실행 결과
첫 번째 숫자와 두 번째 숫자 모두 0을 입력하면 프로그램을 종료합니다.
첫 번째 숫자 : 20
두 번째 숫자 : 50
두 숫자의 합 : 70
첫 번째 숫자 : 0
두 번째 숫자 : 0
프로그램 종료

- 비교연산자를 사용, 입력받은 num1,num2가 (true && true) 모두 참이어야 if문의 코드 블럭이 실행되도록 프로그램을 작성했다. 

 

[ 반복문 예제 2. ]

사용자 입력을 받아 합계를 계산하는 프로그램을 작성하세요. 사용자는 한 번에 한 개의 정수를 입력할 수 있으며, 사용자가 0을 입력하면 프로그램은 종료됩니다. 이 때, 프로그램이 종료될 때까지 사용자가 입력한 모든 정수의 합을 출력하세요. 

package scanner;

import java.util.Scanner;

public class ScannerWhile3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int sum = 0; // 사용자가 입력한 값을 누적할 그릇

        while (true) {
            System.out.print("정수를 입력하세요.(0을 입력하면 종료) : ");
            int number = input.nextInt();

            if (number == 0) {
                break;
            }

            sum += number; // 사용자가 입력한 number 값을 sum에 누적해서 합산, sum = sum + number
        }
        System.out.println("입력한 모든 정수의 합 : " + sum);
    }
}
// 실행 결과
정수를 입력하세요.(0을 입력하면 종료) : 15
정수를 입력하세요.(0을 입력하면 종료) : 45
정수를 입력하세요.(0을 입력하면 종료) : 21
정수를 입력하세요.(0을 입력하면 종료) : 0
입력한 모든 정수의 합 : 81

 

[ Scanner 연습문제 1 - 이름 나이 입력받고 출력하기]

사용자로부터 입력받은 이름과 나이를 출력하세요. 출력 형태는 "당신의 이름은 (이름)이고, 나이는 (나이) 살입니다." 이어야 합니다.

package scanner;

import java.util.Scanner;

public class ScannerEx1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

            System.out.print("이름을 입력하세요 : ");
            String name = input.nextLine();

            System.out.print("나이를 입력하세요 : ");
            int age = input.nextInt();

        System.out.println("당신의 이름은 " + name + "이고, " + "당신의 나이는 " + age + "살입니다.");
    }
}
//실행 결과
이름을 입력하세요 : amy
나이를 입력하세요 : 17
당신의 이름은 amy이고, 나이는 17살입니다.

 

[ Scanner 연습문제 2 - 홀수 짝수 ]

사용자로붙터 하나의 정수를 입력받고, 이 정수가 홀수인지 짝수인지 판단하는 프로그램을 작성하세요.

package scanner;

import java.util.Scanner;

public class ScannerEx2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("하나의 정수를 입력하세요 : ");
        int num1 =input.nextInt();

        if ( num1 % 2 == 0) {
            System.out.println("짝수입니다.");
        } else {
            System.out.println("홀수입니다.");
        }
    }
}
//실행 결과
하나의 정수를 입력하세요 : 12
짝수입니다.


[ Scanner 연습문제 3 - 음식점 주문 ]

사용자로부터 음식의 이름(foodName), 가격(foodPrice), 수량(foodQuantity)을 입력받아 주문한 음식의 총 가격을 계산하고 출력하는 프로그램을 작성하세요. 총 가격은 음식의 가격과 수량을 곱한 값이며, 이를 totalPrice라는 이름의 변수에 저장하세요.

주문 정보와 총 가격을 출력하세요. 출력 형태는 "(음식이름) (수량)개를 주문하셨습니다. 총 가격은 (총가격)원 입니다." 이어야 합니다.

package scanner;

import java.util.Scanner;

public class ScannerEx3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("주문할 음식을 입력하세요 : ");
        String foodName = input.nextLine();

        System.out.print("가격을 입력하세요 : ");
        int foodPrice = input.nextInt();

        System.out.print("수량을 입력하세요 : ");
        int foodQuantity = input.nextInt();

        int totalPrice = foodPrice * foodQuantity;

        System.out.println(foodName + foodQuantity + "개 주문하셨습니다. 총 가격은 " + totalPrice + "원 입니다." );
    }
}
//실행 결과
주문할 음식을 입력하세요 : 햄버거
가격을 입력하세요 : 7000
수량을 입력하세요 : 2
햄버거2개 주문하셨습니다. 총 가격은 14000원 입니다.

- 문제 자체가 길어서 풀기 전부터 뭐부터 해야할 지 어렵다고만 생각했는데 막상 출력 형태를 보고 하나씩 차근차근 입력하니 그냥 문자열과 숫자를 순서대로 입력해 출력해내기만 하면 되는 쉬운 문제였다.. 해보기 전에 고민부터 하지 말고 일단 입력하면서 고민하는 연습을 해야겠다! 

 

[ Scanner 연습문제 4 - 구구단 출력기본원리 이해를 위한 예제 

사용자로부터 하나의 정수 n을 입력받고, 입력받은 정수 n의 구구단을 출력하는 프로그램을 작성하세요. 

package scanner;

import java.util.Scanner;

public class ScannerEx4 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.print("단수를 입력하세요 : ");
        int n = input.nextInt();

        System.out.println(n + "단의 구구단 : ");

        for (int a = 1; a <= 9; a++) {
            System.out.println(n + " * " + a + " = " + n * a);
        }
    }
}
//실행 결과
단수를 입력하세요 : 8
8단의 구구단 : 
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72

- 예전에 for문을 배울 때 구구단을 출력하는 문제가 있었는데, 그 때는 어렵게 느껴졌던 것이 다시 해보니까 쉽게 생각이 나서 문제를 풀 수 있었다!

 

 

 

Opinion

확실히 처음에 개념을 배우고 나서 바로 풀 때는 해설을 보지 않으면 오류가 나서 실행도 못하거나 기억이 안나서 배웠던 것을 다시 보고왔어야 했는데, 활용하는 문제를 몇 번 풀다보니 기억이 새록새록 나서 문제 푸는 것이 어렵지 않고 재밌다! 

자전거를 한 번 배우고 나면 10년이 지나 다시 타도 몸이 기억해서 탈 수 있듯이 코딩도 비슷하게 몸으로, 눈으로, 손으로 익숙하게 만드는 게 중요하다고 생각이 든다.