🟪 Backend-Java

7. 자바 입출력 (콘솔입력/콘솔출력/Scanner클래스)

Hesper03 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"로 넣어야 함