λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“– Java/πŸ’Š Java κ°•μ˜

Java μž…λ¬Έ κ°•μ˜_ν›ˆλ ¨

by carrot0911 2024. 11. 6.

Scanner ν•™μŠ΅

ν›ˆλ ¨ μ‹œμž‘

μ§€κΈˆκΉŒμ§€ ν•™μŠ΅ν•œ λ³€μˆ˜, μ—°μ‚°μž, 쑰건문, λ°˜λ³΅λ¬Έμ€ ν”„λ‘œκ·Έλž˜λ°μ˜ κ°€μž₯ 기본이 λ˜λŠ” κΈ°λŠ₯이닀. λŒ€λΆ€λΆ„μ˜ ν”„λ‘œκ·Έλž¨ μ–Έμ–΄λŠ” 이 κΈ°λŠ₯을 ν•„μˆ˜λ‘œ κ°€μ§„λ‹€. 그리고 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•˜λŠ” 일의 λŒ€λΆ€λΆ„μ€ μ§€κΈˆκΉŒμ§€ μ„€λͺ…ν•œ λ³€μˆ˜, μ—°μ‚°μž, 쑰건문, λ°˜λ³΅λ¬Έμ„ λ‹€λ£¨λŠ” 일이닀. κ·Έλž˜μ„œ 이 κΈ°λŠ₯을 잘 λ‹€λ£¨λŠ” 것이 무엇보닀 μ€‘μš”ν•˜λ‹€.

⭐백문이 λΆˆμ—¬μΌνƒ€!⭐ 

λ³€μˆ˜, μ—°μ‚°μž, 쑰건문, λ°˜λ³΅λ¬Έμ„ 머리둜 μ΄ν•΄ν•˜λŠ” 것은 μ „ν˜€ μ–΄λ ΅μ§€ μ•Šλ‹€. ν•˜μ§€λ§Œ 머리둜 μƒκ°λ§Œ ν•˜λŠ” 것은 μˆ˜μ˜μ„ μ΄λ ‡κ²Œ ν•΄μ•Ό ν•˜κ² μ§€?라고 머리둜 μƒκ°ν•˜λŠ” 것과 κ°™λ‹€. μ€‘μš”ν•œ 것은 코딩을 λͺΈμ΄ μ΅νžˆλŠ” 것이닀. 그러기 μœ„ν•΄μ„œλŠ” 직접 μ½”λ”©ν•˜λŠ” 것이 무엇보닀 μ€‘μš”ν•˜λ‹€! 학생 λ•Œμ²˜λŸΌ λ‹¨μˆœνžˆ μ™Έμš°λŠ” λ°©μ‹μœΌλ‘œλŠ” 쒋은 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 될 수 μ—†λ‹€. 예제 μ½”λ“œλŠ” λͺ¨λ‘ 따라 ν•΄ 보고, λ¬Έμ œλ„ 직접 λ‹€ ν’€μ–΄λ³΄μž. λ¬Έμ œκ°€ μ•ˆ 풀리면 닡을 보고 μ½”λ“œλ₯Ό λ”°λΌμΉœ λ‹€μŒμ— κΈ°μ‘΄ μ½”λ“œλ₯Ό λͺ¨λ‘ μ§€μš°κ³  μ²˜μŒλΆ€ν„° 본인이 슀슀둜 λ‹€μ‹œ 풀어보아도 μ’‹λ‹€. 백문이 λΆˆμ—¬μΌνƒ€!

Scanner

System.out을 ν†΅ν•΄μ„œ 좜λ ₯을 ν–ˆλ“―μ΄, System.in을 ν†΅ν•΄μ„œ μ‚¬μš©μžμ˜ μž…λ ₯을 받을 수 μžˆλ‹€. 그런데 μžλ°”κ°€ μ œκ³΅ν•˜λŠ” System.in을 ν†΅ν•΄μ„œ μ‚¬μš©μž μž…λ ₯을 λ°›μœΌλ €λ©΄ μ—¬λŸ¬ 과정을 거쳐야 ν•΄μ„œ λ³΅μž‘ν•˜κ³  μ–΄λ ΅λ‹€.
μžλ°”λŠ” 이런 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ScannerλΌλŠ” 클래슀λ₯Ό μ œκ³΅ν•œλ‹€. 이 클래슀λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μž μž…λ ₯을 맀우 νŽΈλ¦¬ν•˜κ²Œ 받을 수 μžˆλ‹€.

Scanner 예제 1

Scanner1

package scanner;

import java.util.Scanner;

public class Scanner1 {

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

        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);
    }
}
  • Scanner scanner = new Scanner(System.in);
    • 이 μ½”λ“œλŠ” 객체와 클래슀λ₯Ό λ°°μ›Œμ•Ό μ •ν™•νžˆ 이해할 수 μžˆλ‹€. μ§€κΈˆμ€ Scanner의 κΈ°λŠ₯을 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ newλ₯Ό μ‚¬μš©ν•΄μ„œ Scannerλ₯Ό λ§Œλ“ λ‹€ μ •λ„λ‘œ μ΄ν•΄ν•˜λ©΄ λœλ‹€. ScannerλŠ” System.in을 μ‚¬μš©ν•΄μ„œ μ‚¬μš©μžμ˜ μž…λ ₯을 νŽΈλ¦¬ν•˜κ²Œ 받도둝 도와쀀닀.
    • Scanner scanner μ½”λ“œλŠ” scanner λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 것이닀. μ΄μ œλΆ€ν„° scanner λ³€μˆ˜λ₯Ό ν†΅ν•΄μ„œ scannerλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.
  • scanner.nextLine()
    • μ—”ν„°(\n)λ₯Ό μž…λ ₯ν•  λ•ŒκΉŒμ§€ 문자λ₯Ό κ°€μ Έμ˜¨λ‹€.
  • scanner.nextInt()
    • μž…λ ₯을 intν˜•μœΌλ‘œ κ°€μ Έμ˜¨λ‹€. μ •μˆ˜ μž…λ ₯에 μ‚¬μš©ν•œλ‹€.
  • scanner.nextDouble()
    • μž…λ ₯을 doubleν˜•μœΌλ‘œ κ°€μ Έμ˜¨λ‹€. μ‹€μˆ˜ μž…λ ₯에 μ‚¬μš©ν•œλ‹€.

주의! - λ‹€λ₯Έ νƒ€μž… μž…λ ₯ μ‹œ 였λ₯˜

νƒ€μž…μ΄ λ‹€λ₯΄λ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€. μ˜ˆμ œμ™€ 같이 μˆ«μžμ— 문자λ₯Ό μž…λ ₯ν•˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš” : hello
μž…λ ₯ν•œ λ¬Έμžμ—΄ : hello
μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš” : λ°±λ§Œμ›
Exception in thread "main" java.util.InputMismatchException
	at java.base/java.util.Scanner.throwFor(Scanner.java:964)
	at java.base/java.util.Scanner.next(Scanner.java:1619)
	at java.base/java.util.Scanner.nextInt(Scanner.java:2284)
	at java.base/java.util.Scanner.nextInt(Scanner.java:2238)
	at scanner.Scanner1.main(Scanner1.java:15)

print() vs println()

λ‹€μŒ μ½”λ“œλ₯Ό 보면 println( )이 μ•„λ‹ˆλΌ print( )λ₯Ό μ‚¬μš©ν•œλ‹€.
System.out.print("λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš” : ")
κ·Έ μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

print( ) 좜λ ₯ν•˜κ³  λ‹€μŒ 라인으둜 λ„˜κΈ°μ§€ μ•ŠλŠ”λ‹€.

System.out.print("hello");
System.out.print("world");
// κ²°κ³Ό : helloworld

println( ) 좜λ ₯ν•˜κ³  λ‹€μŒ 라인으둜 λ„˜κΈ΄λ‹€.

System.out.println("hello");
System.out.println("world");
// κ²°κ³Ό : 
hello
world

μš°λ¦¬κ°€ μ—”ν„° ν‚€λ₯Ό 치면 (\n)μ΄λΌλŠ” 문자λ₯Ό λ‚¨κΈ°λŠ” 것이닀.
이 λ¬ΈμžλŠ” μ˜μ–΄λ‘œ new line character, ν•œκΈ€λ‘œ 쀄 λ°”κΏˆ λ˜λŠ” κ°œν–‰ 문자라고 ν•˜λŠ”λ°, 이름 κ·ΈλŒ€λ‘œ μƒˆλ‘œμš΄ 라인으둜 λ„˜κΈ°λΌλŠ” λœ»μ΄λ‹€. μ½˜μ†”μ—μ„œλŠ” 이 문자λ₯Ό 보고 λ‹€μŒ 라인으둜 λ„˜κΈ΄λ‹€.
println( )은 print( )의 λ§ˆμ§€λ§‰μ— \n을 μΆ”κ°€ν•œλ‹€. λ”°λΌμ„œ λ‹€μŒ μ½”λ“œλŠ” println( )κ³Ό κ°™λ‹€.

System.out.print("hello\n");
System.out.print("world\n");
// κ²°κ³Ό :
hello
world

 

Scanner - 기본 예제

Scanner 예제 2

Scanner2

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);
    }
}

Scanner 예제 3

μ‚¬μš©μžλ‘œλΆ€ν„° 두 개의 μ •μˆ˜λ₯Ό μž…λ ₯λ°›κ³ , 더 큰 수λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄ 보자. 두 μˆ«μžκ°€ 같은 경우 두 μˆ«μžλŠ” κ°™λ‹€κ³  좜λ ₯ν•˜λ©΄ λœλ‹€.
쑰건문을 μ‚¬μš©ν•΄μ„œ μ²˜λ¦¬ν•  수 μžˆλ‹€.

Scanner3

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 (num1 < num2) {
            System.out.println("더 큰 숫자 : " + num2);
        } else {
            System.out.println("두 μˆ«μžλŠ” κ°™μŠ΅λ‹ˆλ‹€.");
        }
    }
}


Scanner - 반볡 예제

μ§€κΈˆκΉŒμ§€ κ°œλ°œν•œ ν”„λ‘œκ·Έλž¨λ“€μ€ 단 ν•œ 번의 κ²°κ³Ό 좜λ ₯ ν›„ μ’…λ£Œλ˜λŠ” μΌνšŒμ„± ν”„λ‘œκ·Έλž¨μ΄μ—ˆλ‹€. μ‹€μ œ ν”„λ‘œκ·Έλž¨λ“€μ€ μ΄λ ‡κ²Œ ν•œ 번의 결과만 좜λ ₯ν•˜κ³  μ’…λ£Œλ˜μ§€ μ•ŠλŠ”λ‹€. ν•œ 번 μ‹€ν–‰ν•˜λ©΄ μ‚¬μš©μžκ°€ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•  λ•ŒκΉŒμ§€ λ°˜λ³΅ν•΄μ„œ μ‹€ν–‰λœλ‹€. μ΄μ œλΆ€ν„°λŠ” μ‚¬μš©μžμ˜ μž…λ ₯을 μ§€μ†ν•΄μ„œ 받아듀이고, λ°˜λ³΅ν•΄μ„œ λ™μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•΄ 보자.

Scanner와 λ°˜λ³΅λ¬Έμ„ ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ λœλ‹€.

Scanner 반볡 예제 1

  • μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ¬Έμžμ—΄μ„ κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜λŠ” 예제λ₯Ό λ§Œλ“€μ–΄λ³΄μž.
  • exitλΌλŠ” λ¬Έμžκ°€ μž…λ ₯되면 ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•œλ‹€.
  • ν”„λ‘œκ·Έλž¨μ€ λ°˜λ³΅ν•΄μ„œ μ‹€ν–‰λœλ‹€.

ScannerWhile1

package scanner;

import java.util.Scanner;

public class ScannerWhile1 {

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

        while (true) {
            System.out.print("λ¬Έμžμ—΄μ„ μž…λ ₯ν•˜μ„Έμš”(exit : μ’…λ£Œ) : ");
            String str = scanner.nextLine();

            if (str.equals("exit")) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            }
            System.out.println("μž…λ ₯ν•œ λ¬Έμžμ—΄ : " + str);
        }
    }
}

while (true) : 쀑간에 break 문을 λ§Œλ‚˜κΈ° μ „κΉŒμ§€ λ¬΄ν•œ λ°˜λ³΅ν•œλ‹€.

if (str.equals("exit")) {
    System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
    break;
}

μž…λ ₯받은 λ¬Έμžκ°€ "exit"이면 "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λ₯Ό 좜λ ₯ν•˜κ³  break 문을 ν†΅ν•΄μ„œ while문을 λΉ μ Έλ‚˜κ°„λ‹€.

Scanner 반볡 예제 2

  • 첫 번째 μˆ«μžμ™€ 두 번째 숫자λ₯Ό λ”ν•΄μ„œ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜μž.
  • 첫 번째 μˆ«μžμ™€ 두 번째 숫자 λͺ¨λ‘ 0을 μž…λ ₯ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•œλ‹€.
  • ν”„λ‘œκ·Έλž¨μ€ λ°˜λ³΅ν•΄μ„œ μ‹€ν–‰λœλ‹€.

ScannerWhile2

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);
        }
    }
}

μ’…λ£Œ λΆ€λΆ„

if (num1 == 0 && num2 == 0) {
    System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
    break;
}

num1 == 0 && num2 == 0

  • μž…λ ₯받은 num1, num2 λ‘˜ λ‹€ ν•¨κ»˜ 0일 λ•Œ "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λ₯Ό 좜λ ₯ν•˜κ³  breakλ₯Ό 톡해 while문을 λΉ μ Έλ‚˜κ°„λ‹€.
  • 비ꡐ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν–ˆλ‹€.
    true && true → true이닀. λ”°λΌμ„œ 두 쑰건이 λͺ¨λ‘ 참이어야 if 문의 μ½”λ“œ 블둝이 μ‹€ν–‰λœλ‹€.

Scanner 반볡 예제 3

μ‚¬μš©μž μž…λ ₯을 λ°›μ•„ κ·Έ 합계λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•΄μ•Ό ν•œλ‹€.
μ‚¬μš©μžλŠ” ν•œ λ²ˆμ— ν•œ 개의 μ •μˆ˜λ₯Ό μž…λ ₯ν•  수 있으며, μ‚¬μš©μžκ°€ 0을 μž…λ ₯ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ€ μ’…λ£Œλœλ‹€. μ΄λ•Œ, ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ  λ•ŒκΉŒμ§€ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λͺ¨λ“  μ •μˆ˜μ˜ 합을 좜λ ₯ν•΄μ•Ό ν•œλ‹€.

ScannerWhile3

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 num = input.nextInt();

            if (num == 0) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            }

            sum += num;
        }
        System.out.println("μž…λ ₯ν•œ λͺ¨λ“  μ •μˆ˜μ˜ ν•© : " + sum);
    }
}
  • int sum : 이곳에 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 값을 λˆ„μ ν•œλ‹€.
  • sum += num : μ‚¬μš©μžκ°€ μž…λ ₯ν•œ num 값을 sum에 λˆ„μ ν•΄μ„œ λ”ν•œλ‹€.
    • +=을 μ‚¬μš©ν–ˆμœΌλ―€λ‘œ λ‹€μŒ μ½”λ“œμ™€ κ°™μ•„. sum = sum + num

 

λ¬Έμ œμ™€ 풀이 1

문제 - 이름 λ‚˜μ΄ μž…λ ₯λ°›κ³  좜λ ₯ν•˜κΈ°

μ‚¬μš©μžλ‘œλΆ€ν„° μž…λ ₯받은 이름과 λ‚˜μ΄λ₯Ό 좜λ ₯ν•˜μ„Έμš”. 좜λ ₯ ν˜•νƒœλŠ” "λ‹Ήμ‹ μ˜ 이름은 [이름]이고, λ‚˜μ΄λŠ” [λ‚˜μ΄] μ‚΄μž…λ‹ˆλ‹€."이어야 ν•©λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

λ‹Ήμ‹ μ˜ 이름을 μž…λ ₯ν•˜μ„Έμš”. μžλ°”
λ‹Ήμ‹ μ˜ λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 30
λ‹Ήμ‹ μ˜ 이름은 μžλ°”μ΄κ³ , λ‚˜μ΄λŠ” 30μ‚΄μž…λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerEx1 {

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

        System.out.print("λ‹Ήμ‹ μ˜ 이름을 μž…λ ₯ν•˜μ„Έμš” : ");
        String name = scanner.nextLine();

        System.out.print("λ‹Ήμ‹ μ˜ λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ");
        int age = scanner.nextInt();

        System.out.println("λ‹Ήμ‹ μ˜ 이름은 " + name + "이고, λ‚˜μ΄λŠ” " + age + "μ‚΄μž…λ‹ˆλ‹€.");
    }
}

문제 - ν™€μˆ˜ 짝수

μ‚¬μš©μžλ‘œλΆ€ν„° ν•˜λ‚˜μ˜ μ •μˆ˜λ₯Ό μž…λ ₯λ°›κ³ , 이 μ •μˆ˜κ°€ ν™€μˆ˜μΈμ§€ μ§μˆ˜μΈμ§€ νŒλ³„ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

ν•˜λ‚˜μ˜ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 1
μž…λ ₯ν•œ 숫자 1λŠ” ν™€μˆ˜μž…λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

ν•˜λ‚˜μ˜ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 4
μž…λ ₯ν•œ 숫자 4λŠ” μ§μˆ˜μž…λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerEx2 {

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

        System.out.print("ν•˜λ‚˜μ˜ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ");
        int num = scanner.nextInt();

        if (num % 2 == 0) {
            System.out.println("μž…λ ₯ν•œ 숫자 " + num + "은(λŠ”) μ§μˆ˜μž…λ‹ˆλ‹€.");
        } else {
            System.out.println("μž…λ ₯ν•œ 숫자 " + num + "은(λŠ”) ν™€μˆ˜μž…λ‹ˆλ‹€.");
        }
    }
}

문제 - μŒμ‹μ  μ£Όλ¬Έ

  • μ‚¬μš©μžλ‘œλΆ€ν„° μŒμ‹μ˜ 이름 (foodName), 가격(foodPrice), 그리고 μˆ˜λŸ‰(foodQuantity)을 μž…λ ₯λ°›μ•„, μ£Όλ¬Έν•œ μŒμ‹μ˜ 총가격을 κ³„μ‚°ν•˜κ³  좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.
  • μŒμ‹μ˜ 총가격을 κ³„μ‚°ν•˜μ„Έμš”. 총가격은 각 μŒμ‹μ˜ 가격(foodPrice)κ³Ό μˆ˜λŸ‰(foodQuantity)을 κ³±ν•œ 값이며, 이λ₯Ό totalPriceλΌλŠ” μ΄λ¦„μ˜ λ³€μˆ˜μ— μ €μž₯ν•˜μ„Έμš”.
  • μ£Όλ¬Έ 정보와 총가격을 좜λ ₯ν•˜μ„Έμš”. 좜λ ₯ ν˜•νƒœλŠ” "[μŒμ‹ 이름] [μˆ˜λŸ‰] 개λ₯Ό μ£Όλ¬Έν•˜μ…¨μŠ΅λ‹ˆλ‹€. 총가격은 [총 가격] μ›μž…λ‹ˆλ‹€."이어야 ν•©λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

μŒμ‹ 이름을 μž…λ ₯ν•΄μ£Όμ„Έμš” : ν”Όμž
μŒμ‹μ˜ 가격을 μž…λ ₯ν•΄μ£Όμ„Έμš” : 20000
μŒμ‹μ˜ μˆ˜λŸ‰μ„ μž…λ ₯ν•΄μ£Όμ„Έμš” : 2
ν”Όμž 2개λ₯Ό μ£Όλ¬Έν•˜μ…¨μŠ΅λ‹ˆλ‹€. 총 가격은 40000μ›μž…λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

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 + "μ›μž…λ‹ˆλ‹€.");
    }
}

 

βœ”οΈ μ°Έκ³ 

λ³€μˆ˜ 전체 λ°”κΎΈκΈ° : Shift + F6

 

문제 - ꡬꡬ단 좜λ ₯

μ‚¬μš©μžλ‘œλΆ€ν„° ν•˜λ‚˜μ˜ μ •μˆ˜ n을 μž…λ ₯λ°›κ³ , μž…λ ₯받은 μ •μˆ˜ n의 ꡬꡬ단을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

κ΅¬κ΅¬λ‹¨μ˜ 단 수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : 8
8λ‹¨μ˜ ꡬꡬ단 : 
8 x 1 = 8
8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerEx4 {

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

        System.out.print("κ΅¬κ΅¬λ‹¨μ˜ 단 수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : ");
        int num = scanner.nextInt();

        System.out.println(num + "λ‹¨μ˜ ꡬꡬ단 : ");

        for (int i = 1; i <= 9; i ++) {
            int sum = num * i;
            System.out.println(num + " x " + i + " = " + sum);
        }
    }
}

 

λ¬Έμ œμ™€ 풀이 2

문제 - λ³€μˆ˜ κ°’ κ΅ν™˜

λ³€μˆ˜ a = 10이 λ“€μ–΄μžˆκ³ , b = 20이 λ“€μ–΄μžˆλ‹€.
λ³€μˆ˜ a의 κ°’κ³Ό λ³€μˆ˜ b의 값을 μ„œλ‘œ 바꾸어라.
λ‹€μŒ μ½”λ“œμ—μ„œ μ‹œμž‘κ³Ό μ’…λ£Œ λΆ€λΆ„ 사이에 λ³€μˆ˜μ˜ 값을 κ΅ν™˜ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ λœλ‹€.
힌트 : temp λ³€μˆ˜λ₯Ό ν™œμš©ν•΄μ•Ό ν•œλ‹€.

좜λ ₯ κ²°κ³Ό

a = 20
b = 10

μ •λ‹΅

package scanner.ex;

public class ChargeVarEx {

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int temp;

        temp = a;
        a = b;
        b = temp;
        
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

풀이

  • a와 bλ₯Ό ν•œ λ²ˆμ— μ„œλ‘œ κ΅ν™˜ν•  μˆ˜λŠ” μ—†λ‹€.
  • a = b라고 ν•˜λ©΄ a의 값인 10은 사라져 버린닀. λ”°λΌμ„œ a, b λ‘˜ λ‹€ 20이 λ˜μ–΄λ²„λ¦°λ‹€.
  • a = b라고 ν•˜κΈ° 전에 a의 값을 μ–΄λ”˜κ°€μ— 보관해두어야 ν•œλ‹€. μ—¬κΈ°μ„œλŠ” μž„μ‹œλ‘œ μ‚¬μš©ν•  λ³€μˆ˜μΈ temp에 보관해 λ‘μ—ˆλ‹€.

문제 - 사이 숫자

μ‚¬μš©μžλ‘œλΆ€ν„° 두 개의 μ •μˆ˜λ₯Ό μž…λ ₯λ°›κ³ , 이 두 μ •μˆ˜ μ‚¬μ΄μ˜ λͺ¨λ“  μ •μˆ˜λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.

  • μ‚¬μš©μžμ—κ²Œ 첫 번째 숫자λ₯Ό μž…λ ₯λ°›μœΌμ„Έμš”. λ³€μˆ˜μ˜ 이름은 num1이어야 ν•©λ‹ˆλ‹€.
  • μ‚¬μš©μžμ—κ²Œ 두 번째 숫자λ₯Ό μž…λ ₯λ°›μœΌμ„Έμš”. λ³€μˆ˜μ˜ 이름은 num2이어야 ν•©λ‹ˆλ‹€.
  • λ§Œμ•½ 첫 번째 숫자 num1이 두 번째 숫자 num2보닀 크닀면, 두 숫자λ₯Ό κ΅ν™˜ν•˜μ„Έμš”.
    • μ°Έκ³  : κ΅ν™˜μ„ μœ„ν•΄ μž„μ‹œ λ³€μˆ˜ μ‚¬μš©μ„ κ³ λ €ν•˜μ„Έμš”.
  • num 1λΆ€ν„° num2κΉŒμ§€μ˜ 각 숫자λ₯Ό 좜λ ₯ν•˜μ„Έμš”.
  • 좜λ ₯ 결과에 μœ μ˜ν•˜μ„Έμš”. λ‹€μŒ μ˜ˆμ‹œμ™€ 같이 2, 3, 4, 5처럼 , 둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

첫 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 2
두 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 5
두 숫자 μ‚¬μ΄μ˜ λͺ¨λ“  μ •μˆ˜ : 2, 3, 4, 5

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerEx5 {

    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) {
            int temp;
            temp = num1;
            num1 = num2;
            num2 = temp;
        }

        System.out.print("두 숫자 μ‚¬μ΄μ˜ λͺ¨λ“  μ •μˆ˜ : ");

        for (int i = num1; i <= num2; i++) {
            System.out.print(i);

            if (i != num2) {
                System.out.print(", ");
            }
        }
    }
}

 

λ¬Έμ œμ™€ 풀이 3

문제 - 이름과 λ‚˜μ΄ 반볡

  • μ‚¬μš©μžλ‘œλΆ€ν„° 이름과 λ‚˜μ΄λ₯Ό λ°˜λ³΅ν•΄μ„œ μž…λ ₯λ°›κ³ , μž…λ ₯받은 이름과 λ‚˜μ΄λ₯Ό 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”. μ‚¬μš©μžκ°€ "μ’…λ£Œ"λ₯Ό μž…λ ₯ν•˜λ©΄ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λ‹€μŒ μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œλ₯Ό μ°Έκ³ ν•΄ μ£Όμ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

이름을 μž…λ ₯ν•˜μ„Έμš” (μ’…λ£Œλ₯Ό μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : μžλ°”
λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 30
μž…λ ₯ν•œ 이름 : μžλ°”, λ‚˜μ΄ : 30
이름을 μž…λ ₯ν•˜μ„Έμš” (μ’…λ£Œλ₯Ό μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : ν•˜λ‹ˆ
λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 20
μž…λ ₯ν•œ 이름 : ν•˜λ‹ˆ, λ‚˜μ΄ : 20
이름을 μž…λ ₯ν•˜μ„Έμš” (μ’…λ£Œλ₯Ό μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : μ’…λ£Œ
ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerWhileEx1 {

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

        while (true) {
            System.out.print("이름을 μž…λ ₯ν•˜μ„Έμš” (μ’…λ£Œλ₯Ό μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : ");
            String name = input.nextLine();

            if (name.equals("μ’…λ£Œ")) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            }

            System.out.print("λ‚˜μ΄λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ");
            int age = input.nextInt();  // 숫자만 κ°€μ Έκ°€κ³  μ—”ν„°(\n)κ°€ λ‚¨μ•„μžˆμ–΄μ„œ λ‹€μŒ nextLine()μ—μ„œ μ—†μ• μ€˜μ•Ό ν•œλ‹€.
            input.nextLine();

            System.out.println("μž…λ ₯ν•œ 이름 : " + name + ", λ‚˜μ΄ : " + age);
        }
    }
}

문제 - μƒν’ˆ 가격 계산

  • μ‚¬μš©μžλ‘œλΆ€ν„° μƒν’ˆμ˜ 가격(price)κ³Ό μˆ˜λŸ‰(quantity)을 μž…λ ₯λ°›κ³ , μ΄λΉ„μš©μ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”.
  • 가격과 μˆ˜λŸ‰μ„ μž…λ ₯받은 ν›„μ—λŠ” μ΄λ“€μ˜ 곱을 좜λ ₯ν•˜μ„Έμš”. 좜λ ₯ ν˜•νƒœλŠ” "μ΄λΉ„μš©: [κ³±ν•œ κ²°κ³Ό]"이어야 ν•©λ‹ˆλ‹€.
  • -1을 μž…λ ₯ν•˜μ—¬ 가격 μž…λ ₯을 μ’…λ£Œν•©λ‹ˆλ‹€.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš” (-1을 μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : 1000
κ΅¬λ§€ν•˜λ €λŠ” μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš” : 3
총 λΉ„μš© : 3000
μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš” (-1을 μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : 2000
κ΅¬λ§€ν•˜λ €λŠ” μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš” : 4
총 λΉ„μš© : 8000
μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš” (-1을 μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : -1
ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerWhileEx2 {

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

        while (true) {
            System.out.print("μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš” (-1을 μž…λ ₯ν•˜λ©΄ μ’…λ£Œ) : ");
            int price = scanner.nextInt();

            if (price == -1) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            }

            System.out.print("κ΅¬λ§€ν•˜λ €λŠ” μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš” : ");
            int quantity = scanner.nextInt();

            int totalCost = price * quantity;

            System.out.println("총 λΉ„μš© : " + totalCost);
        }
    }
}

 

λ¬Έμ œμ™€ 풀이 4

문제 - μž…λ ₯ν•œ 숫자의 합계와 평균

  • μ‚¬μš©μžλ‘œλΆ€ν„° μ—¬λŸ¬ 개의 숫자λ₯Ό μž…λ ₯λ°›κ³ , κ·Έ μˆ«μžλ“€μ˜ 합계와 평균을 κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”. μ‚¬μš©μžλŠ” 숫자λ₯Ό μž…λ ₯ν•˜κ³ , λ§ˆμ§€λ§‰μ—λŠ” -1을 μž…λ ₯ν•˜μ—¬ 숫자 μž…λ ₯을 μ’…λ£Œν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€.
  • λͺ¨λ“  숫자의 μž…λ ₯이 λλ‚œ ν›„μ—λŠ”, μˆ«μžλ“€μ˜ 합계 sumκ³Ό 평균 averageλ₯Ό 좜λ ₯ν•˜μ„Έμš”. 평균은 μ†Œμˆ˜μ  μ•„λž˜κΉŒμ§€ 계산해야 ν•©λ‹ˆλ‹€.
  • λ‹€μŒ μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œλ₯Ό μ°Έκ³ ν•΄ μ£Όμ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”. μž…λ ₯을 μ€‘λ‹¨ν•˜λ €λ©΄ -1을 μž…λ ₯ν•˜μ„Έμš” :
1
2
3
4
-1
μž…λ ₯ν•œ μˆ«μžλ“€μ˜ 합계 : 10
μž…λ ₯ν•œ μˆ«μžλ“€μ˜ 평균 : 2.5

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerWhileEx3 {

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

        int sum = 0;
        int count = 0;
        int num = 0;

        System.out.println("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”. μž…λ ₯을 μ€‘λ‹¨ν•˜λ €λ©΄ -1을 μž…λ ₯ν•˜μ„Έμš” : ");

//        while (true) {
//
//            int num = scanner.nextInt();
//
//            if (num == -1) {
//                break;
//            }
//
//            sum += num;
//            count ++;
//        }

        while ((num = scanner.nextInt()) != -1) {
            sum += num;
            count ++;
        }

        double average = (double)sum / count;

        System.out.println("μž…λ ₯ν•œ μˆ«μžλ“€μ˜ 합계 : " + sum);
        System.out.println("μž…λ ₯ν•œ μˆ«μžλ“€μ˜ 평균 : " + average);
    }
}

μœ„μ˜ while문처럼 μΆ•μ•½ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

문제 - μƒν’ˆ ꡬ맀

  • μ‚¬μš©μžλ‘œλΆ€ν„° μƒν’ˆ 정보(μƒν’ˆλͺ…, 가격, μˆ˜λŸ‰)λ₯Ό μž…λ ₯λ°›κ³ , μ΄λ“€μ˜ 총 가격을 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ„Έμš”. 사 μš©μžλŠ” μ—¬λŸ¬ μƒν’ˆμ„ μΆ”κ°€ν•˜κ³  κ²°μ œν•  수 있으며, ν”„λ‘œκ·Έλž¨μ„ μ–Έμ œλ“ μ§€ μ’…λ£Œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ‚¬μš©μžμ—κ²Œ λ‹€μŒ μ„Έ κ°€μ§€ μ˜΅μ…˜μ„ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€: 1: μƒν’ˆ μž…λ ₯, 2: 결제, 3: ν”„λ‘œκ·Έλž¨ μ’…λ£Œ. μ˜΅μ…˜μ€ μ •μˆ˜λ‘œ μž…λ ₯λ°› 으며, μ˜΅μ…˜μ„ μ €μž₯ν•˜λŠ” λ³€μˆ˜μ˜ 이름은 option 이어야 ν•©λ‹ˆλ‹€.
  • μƒν’ˆ μž…λ ₯ μ˜΅μ…˜μ„ μ„ νƒν•˜λ©΄, μ‚¬μš©μžμ—κ²Œ μƒν’ˆλͺ…κ³Ό 가격, μˆ˜λŸ‰μ„ μž…λ ₯λ°›μœΌμ„Έμš”.
  • 결제 μ˜΅μ…˜μ„ μ„ νƒν•˜λ©΄, μ΄λΉ„μš©μ„ 좜λ ₯ν•˜κ³  μ΄λΉ„μš©μ„ 0으둜 μ΄ˆκΈ°ν™”ν•˜μ„Έμš”. (μ‚¬μš©μžκ°€ μ΄λΉ„μš©μ„ ν™•μΈν•˜κ³ , 결제λ₯Ό μ™„λ£Œν–ˆλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μŒ μ‚¬μš©μžλ₯Ό μœ„ν•΄ μ΄λΉ„μš©μ„ λ‹€μ‹œ0으둜 μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.)
  • ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μ˜΅μ…˜μ„ μ„ νƒν•˜λ©΄, "ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€."λΌλŠ” λ©”μ‹œμ§€λ₯Ό μΆœλ ₯ν•˜κ³  ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•˜μ„Έμš”. 
  • μœ„μ˜ μ„Έ κ°€μ§€ μ˜΅μ…˜ 외에 λ‹€λ₯Έ 값을 μž…λ ₯ν•˜λ©΄, "μ˜¬λ°”λ₯Έ μ˜΅μ…˜μ„ 선택해 μ£Όμ„Έμš”."λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜μ„Έμš”.

μ‹€ν–‰ κ²°κ³Ό μ˜ˆμ‹œ

1: μƒν’ˆ μž…λ ₯, 2: 결제, 3: ν”„λ‘œκ·Έλž¨ μ’…λ£Œ
1
μƒν’ˆλͺ…을 μž…λ ₯ν•˜μ„Έμš”: μŠ€ν”„λ§
μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš”: 30000
ꡬ맀 μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”: 1
μƒν’ˆλͺ…:μŠ€ν”„λ§ 가격:30000 μˆ˜λŸ‰:1 합계:30000 
1: μƒν’ˆ μž…λ ₯, 2: 결제, 3: ν”„λ‘œκ·Έλž¨ μ’…λ£Œ
1
μƒν’ˆλͺ…을 μž…λ ₯ν•˜μ„Έμš”: JPA
μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš”: 40000
ꡬ맀 μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš”: 2
μƒν’ˆλͺ…:JPA 가격:40000 μˆ˜λŸ‰:2 합계:80000
1: μƒν’ˆ μž…λ ₯, 2: 결제, 3: ν”„λ‘œκ·Έλž¨ μ’…λ£Œ 
2
총 λΉ„μš©: 110000
1: μƒν’ˆ μž…λ ₯, 2: 결제, 3: ν”„λ‘œκ·Έλž¨ μ’…λ£Œ 
3
ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

μ •λ‹΅

package scanner.ex;

import java.util.Scanner;

public class ScannerWhileEx4 {

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

        int totalPrice = 0;

        while (true) {
            System.out.println("1: μƒν’ˆ μž…λ ₯, 2: 결제, 3:ν”„λ‘œκ·Έλž¨ μ’…λ£Œ");
            int option = scanner.nextInt();
            scanner.nextLine();

            if (option == 1) {
                System.out.print("μƒν’ˆλͺ…을 μž…λ ₯ν•˜μ„Έμš” : ");
                String name = scanner.nextLine();

                System.out.print("μƒν’ˆμ˜ 가격을 μž…λ ₯ν•˜μ„Έμš” : ");
                int price = scanner.nextInt();

                System.out.print("ꡬ맀 μˆ˜λŸ‰μ„ μž…λ ₯ν•˜μ„Έμš” : ");
                int quantity = scanner.nextInt();

                int sum = price * quantity;

                totalPrice = totalPrice + sum;

                System.out.println("μƒν’ˆλͺ… : " + name + " 가격 : " + price + " μˆ˜λŸ‰ : " + quantity + " 합계 : " + sum);
            } else if (option == 2) {
                System.out.println("총 λΉ„μš© : " + totalPrice);
                totalPrice = 0;
            } else if (option == 3) {
                System.out.println("ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œν•©λ‹ˆλ‹€.");
                break;
            } else {
                System.out.println("μ˜¬λ°”λ₯Έ μ˜΅μ…˜μ„ μ„ νƒν•΄μ£Όμ„Έμš”.");
            }


        }
    }
}