๐ŸŸช Backend-Java

7. ์ž๋ฐ” ์ž…์ถœ๋ ฅ (์ฝ˜์†”์ž…๋ ฅ/์ฝ˜์†”์ถœ๋ ฅ/Scannerํด๋ž˜์Šค)

ramen2 2024. 7. 4. 18:51
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ์ฝ˜์†” ์ž…๋ ฅ

โœ… Scanner ํด๋ž˜์Šค

  • ์ž๋ฐ”๋Š” ์ž…์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ System.in, System.out, System.err ์ œ๊ณต, ๋ฌธ์ž์—ด์„ ๋™์ ์œผ๋กœ ๋„ฃ์–ด์คŒ
    (System.in์€ ์ฝ˜์†”๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ ๋ฐ›๋Š”๋ฐ ์‚ฌ์šฉ)
  • ์‚ฌ์šฉ์‹œ : type ๋ณ€์ˆ˜ = ์Šค์บ๋„ˆํด๋ž˜์Šค.๋ฉ”์„œ๋“œ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉ
int age = scanner.nextInt();
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ŠคํŽ˜์ด์Šค๋กœ ์ž…๋ ฅ ๊ฐ’ ๊ตฌ๋ถ„, nextLine()์€ ์—”ํ„ฐ๋กœ ์ž…๋ ฅ๊ฐ’ ๊ตฌ๋ถ„ํ•˜๊ณ  ์ŠคํŽ˜์ด์Šค๋Š” ๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰ํ•จ

    ๐Ÿ”ต ์ž๋ฃŒํ˜• ๋ฉ”์„œ๋“œ
    ์ •์ˆ˜ํ˜• nextByte() ์ž…๋ ฅ๊ฐ’ byteํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
      nextShort() ์ž…๋ ฅ๊ฐ’ shortํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
      nextInt() ์ž…๋ ฅ๊ฐ’ intํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
      nextLong() ์ž…๋ ฅ๊ฐ’ longํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
    ์‹ค์ˆ˜ํ˜• nextFloat() ์ž…๋ ฅ๊ฐ’ floatํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
      nextDouble() ์ž…๋ ฅ๊ฐ’ doubleํ˜•์œผ๋กœ ๋ฐ˜ํ™˜
    ๋ฌธ์žํ˜• next() ์ž…๋ ฅ ๋ผ์ธ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜
      nextLine() ์ž…๋ ฅ ๋ผ์ธ ์ „์ฒด ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜(์ŠคํŽ˜์ด์Šค ํฌํ•จ)

 

 

๐Ÿ”ฐ ์ฝ˜์†” ์ž…๋ ฅ์ฐฝ ํ™œ์„ฑํ™”๋ฅผ ์œ„ํ•œ Vscode ์„ค์ •๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•

- ์„ค์ • : java console ๊ฒ€์ƒ‰  : externalTerminal ์œผ๋กœ ์ˆ˜์ •

 

 

 

 

๐Ÿ“์ฝ˜์†”์ž…๋ ฅ ์ž๋ฃŒํ˜• ๋ฉ”์„œ๋“œ ์˜ˆ์‹œ

package section18;
import java.util.Scanner;
public class Practice1803 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // ์ ์ ˆํ•œ Scanner ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅ/์ถœ๋ ฅ์ด ๋˜๊ฒŒ ํ•˜์‹œ์˜ค!
        /*
         * ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ๊น€์ผ๋‚จ
         * ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: 99
         * ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: 169.9
         * ์ด๋ฆ„: ๊น€์ผ๋‚จ, ๋‚˜์ด: 99, ํ‚ค: 169.90
         */
        System.out.print("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        String name = scanner.nextLine();
        System.out.print("๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        int age = scanner.nextInt();
        System.out.print("ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        double height = scanner.nextDouble();
        System.out.printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.1f\n", name, age, height);
        
        scanner.close();
    }
}

 

 

์ž…๋ ฅ์ฐฝ๊ณผ ๊ฒฐ๊ณผ

 

 

 

 

 

 

๐Ÿ“Œ ์ถœ๋ ฅ ๋ช…๋ น ( System.out.printf(); )

System.out.print(); ์ธ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ˜์†” ์ถœ๋ ฅ
System.out.println(); ์ธ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ฝ˜์†” ์ถœ๋ ฅ + ๊ฐœํ–‰(์ค„๋ฐ”๊ฟˆ)
System.out.printf(); ์„œ์‹ ๋ฌธ์ž ์‚ฌ์šฉ ์ถœ๋ ฅ(๋ฌธ์ž์—ด ํฌ๋งคํŒ…)

 

 

๐Ÿ”ต ์„œ์‹ ๋ฌธ์ž๋ณ„ ์ถœ๋ ฅ ํ˜•

%d ์ •์ˆ˜(10์ง„์ˆ˜)
%o ์ •์ˆ˜(8์ง„์ˆ˜)
%x ์ •์ˆ˜(16์ง„์ˆ˜)
%f ์‹ค์ˆ˜
%e ์ง€์ˆ˜
%g %e ๋˜๋Š” %f ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ
%s ๋ฌธ์ž์—ด
%c ๋ฌธ์ž
%% Literal %(๋ฌธ์ž์—ด๋กœ ์ทจ๊ธ‰)

 

 

 

 

๐Ÿ“ ์„œ์‹ ๋ฌธ์ž๋ณ„ ๋‹จ์ˆœ ์ถœ๋ ฅ๋ฌธ ์˜ˆ์‹œ

- Ex.๋งž๋Š” ์„œ์‹๋ฌธ์ž ๋„ฃ๊ณ  ์ถœ๋ ฅํ•˜๊ธฐ

package section18;

public class Practice1801 {
    public static void main(String[] args) {
        int age = 25;
        double height = 175.5;
        String city = "Busan";

        //๋‚˜์ด,ํ‚ค,๋„์‹œ ๊ฐ€ ๋‚˜์˜ค๋„๋ก ๋‚˜์ด:? , ํ‚ค: ? ..  ์ž‘์„ฑํ•˜๊ธฐ

        System.out.printf("๋‚˜์ด:%d, ํ‚ค: %.1f, ๋„์‹œ: %s \n", age,height,city);

    }
}

 

 

-Ex) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ์‹ ๋ฌธ์ž ์‚ฌ์šฉ

package section18;
public class Ex1803 {
    public static void main(String[] args) {
    System.out.println(String.format("I eat %d apples.", 5 ));
    //format ์„œ์‹ ๋ฌธ์ž(%d)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ
    //์œ„์˜ string format ์“ฐ๋Š”๊ฒŒ ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ ๋‚˜์˜จ๊ฒŒ ์•„๋ž˜์˜ printf(์–˜๋„ ์ค„๋ฐ”๊ฟˆ์ด ์•ˆ๋˜๋ฏ€๋กœ ํ•„์š”์‹œ \n์„ ๋ถ™ํž˜)

    System.out.printf(String.format("๋‚˜๋Š” %d ์‹œ์— ์ €๋…์„ ๋จน์„๊ฒƒ์ด๋‹ค \n",8));
    System.out.printf(String.format("๋‚ด ์‹œ๋ ฅ์€ %.1f ์ด๋‹ค \n",1.2));

    System.out.printf("i eat %d apples. \n", 5);
    //์‹ค์ˆ˜ ๋„ฃ๊ธฐ : ์‹ค์ˆ˜์šฉ ์„œ์‹๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์•ผํ•จ (ํ‘œํ˜„ํ•˜๊ณ ์žํ•˜๋Š” ์†Œ์ˆซ์  ์ž๋ฆฌ๊นŒ์ง€๋ฅผ  %.n ์œผ๋กœ ํ‘œ๊ธฐ)
    System.out.printf("i eat %f apples. \n", 2.5);
    System.out.printf("i eat %.2f apples. \n", 2.5);
    System.out.printf("i eat %s apples. \n", "five");
    System.out.printf("i eat %s apples. \n", "2.50");


    //%๋ฅผ ๋ถ™ํžˆ๋ ค๋ฉด %%๋กœ ํ•จ
    System.out.printf("i have completed %d%% of my Java studies.\n", 50);
    
    //์ˆซ์ž ๊ธ€์ž ๊ฐ™์ด ์„œ์‹๋ฌธ์ž๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ
    System.out.printf("i have completed %d%% of my %s studies.\n", 100,"Java");
    System.out.printf("i have completed %3d%% of my %s studies.\n", 90,"Java");
    System.out.printf("i have completed %-3d%% of my %s studies.\n", 20,"Java");
    //%3d%%, %-3d%% ์ฒ˜๋Ÿผ 3์นธ์˜ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋ฉฐ ์„œ์‹๋ฌธ์ž์˜ ๊ณต๊ฐ„ํ™•๋ณด๋Ÿ‰์„ ์ง€์ •๊ฐ€๋Šฅ

    System.out.printf("i have completed %.2f%% of my %s studies.\n", 99.9999,"Java");
    //๋ฐ˜์˜ฌ๋ฆผ์„ ํ•จ = 99.9999๋Š” 100.00%๋กœ ํ‘œํ˜„๋จ (๋ฐ˜์˜ฌ๋ฆผ์ด ์‹ซ์œผ๋ฉด ๋ฌธ์ž์—ด๋กœ ๋„ฃ์–ด์•ผํ•จ -> "99.9999","Java")

    }
    
}

 

 

- Ex. ์„œ์‹ ๋ฌธ์ž์™€ ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ (Scanner ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ ์ž…๋ ฅํ•ด๋ณด๊ธฐ)

 

package section18;
import java.util.Scanner;
public class Practice1803 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // ์ ์ ˆํ•œ Scanner ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅ/์ถœ๋ ฅ์ด ๋˜๊ฒŒ ํ•˜์‹œ์˜ค!
        /*
         * ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ๊น€์ผ๋‚จ
         * ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: 99
         * ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: 169.9
         * ์ด๋ฆ„: ๊น€์ผ๋‚จ, ๋‚˜์ด: 99, ํ‚ค: 169.90
         */
        System.out.print("์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        String name = scanner.nextLine();
        System.out.print("๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        int age = scanner.nextInt();
        System.out.print("ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ");
        double height = scanner.nextDouble();
        System.out.printf("์ด๋ฆ„: %s, ๋‚˜์ด: %d, ํ‚ค: %.1f\n", name, age, height);
        
        scanner.close();
    }
}

 

 

 

 

 

 

 

๐Ÿ”ฐ String format ๊นŒ์ง€ ์จ์ฃผ๋Š”๊ฒŒ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฏ€๋กœ, println (์ž๋™ ๊ฐœํ–‰) ๋Œ€์‹  printf ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ

๋‚ด์šฉ์— \n ์„ ๋ถ™ํ˜€ ์ˆ˜๋™ ์ค„๋ฐ”๊ฟˆ์„ ํ•˜๋Š”์‹์œผ๋กœ ์‚ฌ์šฉ

 System.out.printf("๋‚˜์˜ ํ‚ค๋Š” %d Cm์ด๋‹ค.\n", 165);

 

 

 

๐Ÿ”ฐ์นธ์„ ํ™•๋ณด ํ•˜๋ ค๋ฉด ์„œ์‹๋ฌธ์ž์— -n์ด๋‚˜ n์„ ๋ถ™ํž˜

System.out.printf("i have completed %d%% of my %s studies.\n", 100,"Java");   
System.out.printf("i have completed %3d%% of my %s studies.\n", 90,"Java");

90% ์•ž์— 3์นธ์ด ๋“ค์—ฌ์จ์ง

 

 

 

๐Ÿ”ฐ์ˆซ์ž์˜ ๋ฐ˜์˜ฌ๋ฆผ์ด ์ž๋™์œผ๋กœ ๋ฐ˜์˜๋˜๋ฏ€๋กœ, ๋ฌธ์ž์—ด์œผ๋กœ ์ˆ˜์ • ํ•œ๋‹ค

(Ex. 99.999 ์ˆซ์ž์˜ ๋ฐ˜์˜ฌ๋ฆผ ์ด์Šˆ)

 System.out.printf("i have completed %.2f%% of my %s studies.\n", 99.9999,"Java");

 

์ด๋ ‡๊ฒŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ์„œ์‹๋ฌธ์ž๋ฅผ %.2f (์ฆ‰, ์†Œ์ˆซ์  2์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„) %%๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—

๋ฐ˜์˜ฌ๋ฆผ ํ•˜๋Š” ํŠน์„ฑ์ƒ, 100.00%  ๋˜๋Š”๋ฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด 99.999๋ฅผ ๋ฌธ์ž์—ด์ธ "99.999"๋กœ ๋„ฃ์–ด์•ผ ํ•จ

 

 

 

๋ฐ˜์‘ํ˜•