안녕하세요! 오늘은 Java 자료의 입력과 출력에 대해 공부해 볼게요.
클래스 Scanner를 이용한 자료형의 입력
클래스 scanner
콘솔에 입력하는 다양한 자료 값을 입력받으려면 클래스 java.util.Scanner를 사용합니다. 즉, 클래스 Scanner는 패키지가 java.util.Scanner로 사용합니다. 콘솔 입력을 위한 객체 input을 만들려면 java.util.Scanner input = new java.util.Scanner(System.in);와 같이 사용해야 합니다. input은 자료형을 java.util.Scanner로 선언하여 객체를 저장합니다. 생성된 객체 input을 이용하여 실제 문자열을 하나 입력받으려면 String str = input.next();와 같이 input.next()를 호출하여 반환 값을 문자열 변수에 저장합니다.
다양한 메소드의 이용
콘솔로부터 다음 토큰인 문자열을 입력받으려면 java.util.Scanner의 메소드 next()를 사용하고 정수를 입력받으려면 메소드 nextInt(), nextLong() 등을 사용합니다. nextInt(2)는 콘솔로부터 다음 토큰인 정수를 이진수로 입력받아 int형으로 반환합니다. 8진수는 nextInt(8), 16진수는 nextInt(16)으로 가능합니다.
Scanner의 메소드 | 설명 |
String next() | 토큰을 읽어 문자열로 반환 |
int nextInt() int nextInt(int radix) |
다음 정수를 읽어 int로 반환 다음 정수를 인자인radix 진법으로 읽어 int로 반환 |
long nextLong() long nextLong(int radix) |
다음 정수를 읽어 long로 반환 다음 정수를 인자인radix 진법으로 읽어 long으로 반환 |
float nextFloat() double nextDouble() |
다음 실수를 읽어 float로 반환 다음 실수를 읽어 double로 반환 |
String nextLine() | 다음 줄의 내용을 모두 읽어 문자열로 반환 |
boolean nextBoolean() | 다음 논리 값을 읽어 boolean으로 반환 |
java.util.Scanner 객체는 사용자가 콘솔에 입력하는 값을 공백 문자와 함께 '\t', '\f', '\r', '\n'으로 구분하여 입력받습니다. 쉽게 설명하자면 이름과 나이를 입력받는 프로그램을 실행했을 때 '홍길동 22' 이렇게 입력을 한다면 홍길동이라는 이름 뒤에 공백 문자가 있어 그 뒤에 오는 22를 나이로 입력받는다는 것입니다. 여기서 '홍 길동 22' 이런 식으로 입력을 하게 된다면 홍이 이름이 되고 길동이 나이가 되는 것인데 나이는 숫자이기 때문에 int로 입력 받아야 하는데 문자열로 입력이 됐고 토큰 2개를 입력해야 하는데 3개를 입력했기 때문에 오류가 발생하게 됩니다.
다양한 입·출력 메소드
클래스 System의 필드 out, in, err
콘솔에 표준 출력하기 위해 클래스 System의 필드 out을 사용합니다. 클래스 System은 기본 패키지인 java.lang에 속하며, 소속변수 out은 static한 필드이므로 그대로 System.out을 사용할 수 있습니다. 클래스 System의 필드는 err, in, out 3가지가 있습니다. 이클립스에서 System.err를 사용하여 출력하면 붉은 색으로 출력됩니다.
출력을 위한 다양한 메소드의 이용
클래스 PrintStream의 패키지는 java.io입니다. 클래스 PrintStream 자료형 필드인 out은 다양한 종류의 자료를 출력하는 메소드를 지원합니다. 문장 System.out.print()는 콘솔의 현재 줄에 다양한 자료형의 인자를 출력합니다. System.out.println()는 콘솔의 현재 줄에 다양한 자료형의 인자를 출력하고 다음 줄로 이동하여 출력을 준비합니다. System.out.printf()는 C언어의 printf()와 같은 기능의 출력함수로 출력형태를 문자열로 표시하고 실제 출력 인자는 뒤에 기술하는 방식입니다. 메소드 printf()의 첫 번째 인자는 형식 문자열이며 내부의 %d는 이후 인자의 값이 대체되어 출력되는 형식 지정자입니다. 또한 메소드 format()은 printf()와 같은 기능을 수행합니다.
int num1 = 23;
int num2 = 1024;
System.out.printf("num1 = %d, num2 = %d", num1, num2);
'Language > Java' 카테고리의 다른 글
[JAVA]자바 자료형과 변수 (0) | 2020.11.30 |
---|---|
[JAVA]자바 문자열 출력하기 - println (0) | 2020.11.25 |
[JAVA]자바 구조와 문장 (0) | 2020.11.25 |
[JAVA]자바 시작하기(JDK, eclipse 설치) (0) | 2020.11.22 |