자바에서 **입력(Input)**과 **출력(Output)**은 프로그램과 사용자 또는 외부 장치 간의 데이터 주고받기를 의미합니다. 주로 **표준 입력(stdin)**과 **표준 출력(stdout)**을 다루게 되며, 콘솔을 통한 데이터 입출력이 기본입니다.
자바에서 가장 많이 사용되는 콘솔 입력 방법은 java.util.Scanner 클래스입니다.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
메소드 |
설명 |
---|---|
next() |
단어 하나 입력 (공백 이전까지) |
nextLine() |
한 줄 전체 입력 |
nextInt() |
정수 입력 |
nextDouble() |
실수 입력 |
nextBoolean() |
논리값 입력 (true/false) |
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("이름 입력: ");
String name = sc.nextLine();
System.out.print("나이 입력: ");
int age = sc.nextInt();
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
}
자바는 System.out 객체를 사용하여 표준 출력으로 데이터를 보냅니다.
줄바꿈 없이 출력
System.out.print("안녕하세요");
줄바꿈 포함 출력
System.out.println("Hello");
System.out.println("World");
출력 결과:
Hello
World
형식을 지정하여 출력 (C 언어 스타일)
String name = "Java";
int age = 25;
System.out.printf("이름: %s, 나이: %d", name, age);
출력 결과:
이름: Java, 나이: 25
형식 지정자 |
의미 |
---|---|
%d |
정수 |
%f |
실수 |
%s |
문자열 |
%n |
줄바꿈 (\n 대체) |
nextLine()은 줄 전체를 읽지만, nextInt()나 next() 다음에 nextLine()을 쓰면 줄바꿈 문자가 남아 문제가 될 수 있습니다.
int age = sc.nextInt();
sc.nextLine(); // 버퍼 비우기
String name = sc.nextLine();
파일로부터 데이터를 읽거나 저장하려면 다음과 같은 클래스들을 사용할 수 있습니다.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class FileInputExample {
public static void main(String[] args) throws FileNotFoundException {
File file = new File("input.txt");
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
}
}
import java.io.FileWriter;
import java.io.IOException;
public class FileOutputExample {
public static void main(String[] args) throws IOException {
FileWriter writer = new FileWriter("output.txt");
writer.write("Hello, File!");
writer.close();
}
}
항목 |
주요 클래스 / 메소드 |
---|---|
콘솔 입력 |
Scanner, System.in |
콘솔 출력 |
System.out.print(), println(), printf() |
파일 입력 |
File, Scanner, BufferedReader 등 |
파일 출력 |
FileWriter, PrintWriter, BufferedWriter 등 |
고급 입출력은 BufferedReader, BufferedWriter, ObjectInputStream 등을 사용합니다.
자바에서는 입출력 예외(IOException)가 많이 발생할 수 있으므로 try-catch 혹은 throws 처리가 필요합니다.