제이제이
article thumbnail

 

콘솔 입력


🤔 콘솔이란?

  • 컴퓨터를 대상으로 데이터를 입력하고 출력하는 장치들을 의미합니다.
  • 예를 들어 키보드로 데이터를 입력하고 입력된 데이터를 출력하는 모니터도 콘솔 입출력 장치에 해당합니다.

 

Scanner 클래스

  • 자바 5버전부터 Scanner 클래스가 도입되었습니다.

 

역할

  • 키보드 입력뿐만 아니라 여러 가지의 입력 값에 대해서 데이터를 추출하는 역할을 하는 클래스입니다.
  • java.util 패키지에 있으며 Scanner 클래스안에는 다음과 같이 여러 생성자들이 정의되어 있습니다.
Scanner(File source)    //파일 입력과 관련된 생성자
Scanner(String source)  //문자열 입력과 관련된 생성자
Scanner(InputStream source) //입력 스트림과 관련된 생성자

 

  • Scanner 클래스를 사용할 때는 다음과 같이 패키지를 불러와야 합니다.
import java.util.Scanner;

 

  • 다음의 코드를 통해 Scanner에 대해 자세하게 살펴봅시다.

 

💻 예시 코드

import java.util.Scanner;

public class ScanningString {
    public static void main(String[]args){
        String source = "1 3 5";
        Scanner sc = new Scanner(source);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();

        int sum = num1 + num2 + num3;
        System.out.printf("%d + %d + %d = %d\\n",num1,num2,num3,sum);
    }
}

 

📸 출력 결과

1 + 3 + 5 = 9

 

  • 위의 코드에서 Scanner를 살펴보면 Scanner 인스턴스에 인자로 문자열 인스턴스(source)가 전달됩니다.
  • Scanner 클래스는 참조변수 sc를 통해 source가 참조하는 대상으로부터, 데이터 값을 추출입니다.
Scanner sc = new Scanner(source); 

 

Scanner 클래스의 키보드 사용

  • 약간의 수정을 통해 Scanner 인스턴스와 키보드 입력에 대해 살펴보겠습니다.
  • Scanner의 생성자로 전달된 System.in은 키보드를 의미합니다.

 

Scanner sc = new Scanner(System.in);

 

  • 앞서 본 코드를 키보드 입력에 대해 바꾸어 보면 다음과 같습니다.

💻 예시 코드

import java.util.Scanner;

public class ScanningKeyboard {
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();

        int sum = num1 + num2 + num3;
        System.out.printf("%d + %d + %d = %d\\n",num1,num2,num3,sum);
    }
}

 

📸 출력 결과

  • nextInt메소드는 입력된 값을 int의 자료형으로 받는 역할을 합니다.
12
24
36
12 + 24 + 36 = 72

 

Scanner 클래스의 next ~ 메소드들

  • 이번에는 입력값을 다양한 타입으로 읽어들이는 Scanner 클래스의 next ~메소드들에 대해 알아보겠습니다.

 

next ~ 메소드들

  • 이해를 위해 다음의 코드를 살펴봅시다.

 

💻 예시 코드

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

        System.out.print("문자열 입력: ");
        String str1 = sc.nextLine();

        System.out.print("문자열 입력: ");
        String str2 = sc.nextLine();

        System.out.printf("입력된 문자열 1: %s\\n",str1 );
        System.out.printf("입력된 문자열 2: %s\\n",str2 );
    }
}

 

📸 출력 결과

  • nextLine메소드를 통해 키보드를 이용해 입력한 문자열을 추출함을 알 수 있습니다.
문자열 입력 : Today is Wednesday
문자열 입력: I love Java
입력된 문자열 1: Today is Wednesday
입력된 문자열 2: I love Java

 

콘솔 출력


  • 이번에는 콘솔 출력에 대해서 알아보겠습니다.

 

System.out.println과 System.out.print

  • 자바에서의 대표적인 콘솔 출력 메소드에는 System.out.println과 System.out.print가 있습니다.

 

차이점

  • System.out.println메소드는 출력 후 개 행(행을 바꿈)을 하고, 반면 System.out.print 메소드는 문자열만 출력하고 행을 바꾸지 않는다.
  • 이와 관련하여 다음의 코드를 살펴봅시다.

 

💻 예제 코스

class Box{
    private String conts;

    public Box(String conts) {
        this.conts = conts;
    }

    public String toString(){
        return conts;
    }
}

public class AutoCallToString {
    public static void main(String[]args){
        StringBuilder stb = new StringBuilder("12");
        stb.append(34);
        System.out.println(stb.toString());
        System.out.println(stb);

        Box box = new Box("Camera");
        System.out.println(box.toString());
        System.out.println(box);
    }
}

 

📸 출력 결과

1234
1234
Camera
Camera

 

  • 위에서 정의한 Box 클래스와 StringBuilder 클래스에는 다음과 같은 공통점이 있습니다.

-> 문자열을 반환하는 public String toString() 메소드가 정의되어 있습니다.

 

  • 따라서 인스턴스(객체)가 가지고 있는 문자열의 확인하기 위해 System.out.println메소드를 사용하였습니다.
System.out.println(stb.toString()); // toString이 반환하는 문자열 출력
System.out.println(box.toString()); // toString이 반환하는 문자열 출력

 

  • 또한 위의 코드를 살펴보면 다음과 같이 인스턴스(객체)의 참조 값을 넘겨도 동일한 출력 결과를 확인할 수 있었습니다.
System.out.println(stb);
System.out.println(box);

 

  • 이를 통해 알수 있는 사실은 다음과 같습니다.

-> System.out.println 메소드에 참조 값을 전달하면, 이 값의 인스턴스(객체)를 대상으로 toString을 호출한다.
(반환되는 문자열을 출력함)

  • 이와 같이 System.out.print 메소드 또한 동일하게 동작합니다.

 

📒 Reference (참고 자료)


  1. 윤성우의 열혈 자바

 

profile

제이제이

@아사비치즈스틱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!