[Java] 자바 기본 입출력
카테고리: Java
태그: coding Programming Java

자바 기본 입출력
여태까지 프로그램을 작성할 때 System.out.println()을 계속 사용해 실행결과를 확인해 왔는데,
이는 자바에서 데이터를 출력할 수 있도록 매표 메서드로 System.out 이라는 객체를 사용하기 때문이다.
반대로 키보드로 데이터를 입력받을 때는 System.in 객체를 사용한다
![]()
화면에 데이터 출력
자바에서는 콘솔 뷰로 데이터를 출력하려고 다음 메서드들을 제공하는데, 모두 System.out 객체와 연결해 사용한다
println(): () 내부의 내용을 출력한 후 행을 바꾼다print(): () 내부의 내용을 출력만 하고 행은 바꾸지 않는다printf(): () 내부의 내용을 지정된 포맷을 사용해 출력한다
포맷을 지정해서 출력하는 printf() 메서드는 %로 시작하는 포맷을 여러 개 포함할 수 있는 포맷 명시자를 사용한다. 단, 이 포맷 개수와 포맷을 적용할 데이터 개수는 서로 같아야 한다
System.out.printf("포맷 명시자", 데이터, 데이터, ∙∙∙);
(a) 사용 형식
int x = 5; // x 변수를 10진수 정수 포맷과 대응시킨다.
double pi = 3.14; // pi 변수를 10진수 실수 포맷과 대응시킨다
System.out.print("x = %d and pi = %f\n", x, pi);
printf() 메서드는 기본적으로 오른쪽으로 정렬해서 출력하지만 % 다음에 마이너스 표시(-)가 있으면 왼쪽으로 정렬해서 출력한다.
% 다음에 숫자가 있다면 출력될 자릿수를 지정한다. 실수는 %a,b로 표현할 수 있는데, 여기서 a는 소수점 이하의 숫자까지 포함해 출력될 최소
자릿수를 나타내고, b는 소수점 이하 자릿수를 나타낸다. 출력할 내용이 자릿수보다 작다면 기본적으로 공백으로 채우지만, % 다음에 0이 있다면 0으로 채운다.
탭Tab, 줄 바꿈,% 기호를 출력하려면 각각 \t,\n,%%로 표현한다
| 종류 | 데이터 | 포맷 | 실행결과 | 설명 |
|---|---|---|---|---|
| 정수 | 97 | %d | 97 | 10진수 |
| %o | 141 | 8진수 | ||
| %x | 61 | 16진수 | ||
| %c | a | 문자 | ||
| %5d | 97 | 5자리. 빈자리는 공백처리한다 | ||
| %-5d | 97 | 5자리. 빈자리는 공백 처리한다. 왼쪽정렬 | ||
| %05d | 00097 | 5자리. 빈자리는 0으로 채운다 | ||
| 문자열 | “java” | %s | “java” | 문자열 |
| %5s | ” java” | 5자리. 빈자리는 공백 처리한다 | ||
| %-5s | “java” | 5자리. 빈자리는 공백 처리한다. 왼쪽정렬 | ||
| 실수 | 3.14f | %f | 3.140000 | 10진수 실수 |
| %e | 3.140000e+00 | 지수 | ||
| %4.1f | 3.1 | 4자리. 소수점 이하 1자리 | ||
| %04.1f | 03.1 | 4자리. 소수점 이하 1자리. 빈자리 | ||
| %-4.1f | 3.1 | 4자리. 소수점이하 1자리. 왼쪽정렬 |
포맷을 이용한 화면 출력
public class PrintfDemo {
public static void main(String[] args) {
int i = 97;
String s = "java";
double f = 3.14f;
System.out.printf("%d\n", i);
System.out.printf("%o\n", i);
System.out.printf("%x\n", i);
System.out.printf("%c\n", i);
System.out.printf("%5d\n", i);
System.out.printf("%05d\n", i);
System.out.printf("%s\n", s);
System.out.printf("%5s\n", s);
System.out.printf("%-5s\n", s);
System.out.printf("%f\n", f);
System.out.printf("%e\n", f);
System.out.printf("%4.1f\n", f);
System.out.printf("%04.1f\n", f);
System.out.printf("%-4.1f\n", f);
}
}
출력값
97
141
61
a
97
00097
Java
Java
Java
3.140000
3.140000e+00
3.1
03.1
3.1
키보드로 데이터 입력
키보드로 데이터를 입력받을 때 System.in 객체를 직접 사용해 입력 스트림을 생성할 수도 있지만, 입력된 데이터를 처리하는 과정이 번거롭다.
그러나 다음 방식으로 Scanner클래스를 통하여 간접적으로 System.in 객체를 사용하면 데이터를 쉽게 입력받아 처리할 수 있다.
① 프로그램의 첫 행에 다음을 추가해 Scanner 클래스의 경로 이름을 컴파일러에 알린다
import java.utill.Scanner;
② 키보드로 데이터를 입력받으려고 System.in 객체와 연결된 Scanner 객체를 생성한다
Scanner in = new Scanner(System.in);
③ Scanner 클래스가 제공하는 다양한 메서드를 이용해 키보드로 데이터를 입력받는다
int x = in.nextInt(); // 정수를 읽어 x 변수에 대입한다
Scanner 클래스가 제공하는 메서드는 키보드로 입력된 값을 공백이나 탭 등 구분자(\t, \f, \r, \n)로 구별해 데이터로 읽어 들인다.
단, nextLine() 메서드는 행 바꿈 문자(‘\n’)만 구분자로 사용한다
| 메서드 | 반환 타입 |
|---|---|
| next() | String |
| nextByte() | byte |
| nextShort() | short |
| nextInt() | int |
| nextLong() | long |
| nextFloat() | float |
| nextDouble() | double |
| nextLine | String |
키보드로 데이터 입력
improt java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args){
Scanner in = new Scanner(System.in); // Scanner 객체를 생성한다
int x = in.nextInt(); // 키보드로 입력한 정수 데이터를 변수에 대입한다
int y = in.nextInt();
System.out.printf("%d * %d은 %d 입니다.\n", x, y, x * y);
}
}
10 // 키보드로 입력한 값이다
20
10 * 20은 200입니다
댓글 남기기