자바 기본 입출력 완전 정복, Scanner와 System.out 사용법 총정리
🧑💻 자바 입문자를 위한 필수 개념, 콘솔 입력과 출력 제대로 익혀보세요!
처음 자바(Java)를 공부할 때 가장 먼저 만나는 개념이 바로 입출력입니다.
사용자에게 입력을 받고 그 결과를 출력하는 것은 프로그램의 핵심 기능 중 하나인데요.
자바에서는 이를 위해 Scanner 클래스와 System.out 객체를 주로 사용합니다.
이 둘은 자바 입문자뿐만 아니라 중급 이상의 개발자들도 실무에서 꾸준히 활용하는 만큼, 정확한 사용법을 알고 익숙해지는 것이 중요하죠.
오늘은 자바에서 가장 기본적이면서도 꼭 알아야 할 입력과 출력 방법을 쉽게 정리해 드릴게요.
특히 키보드 입력을 처리하는 Scanner는 사용자와 프로그램 간의 상호작용을 가능하게 해주고,
System.out.println은 콘솔을 통해 결과값을 출력할 때 사용됩니다.
이 글에서는 두 도구의 기본 개념부터 실전 예제까지 꼼꼼히 알려드리며, 자주 하는 실수나 주의할 점도 함께 짚어볼 예정이에요.
초보자분들도 코드만 따라오면 금방 감을 잡을 수 있도록 구성했으니, 부담 없이 시작해보세요!
📋 목차
🖥️ Scanner 클래스란?
자바에서 Scanner 클래스는 키보드나 파일 등으로부터 입력을 받을 수 있게 해주는 도구입니다.
대부분의 경우 키보드 입력을 처리하는 데 사용되며, java.util 패키지에 포함되어 있어 import 후 사용할 수 있습니다.
기본적인 사용 방식은 매우 간단합니다.
입력을 받을 때는 Scanner 객체를 생성하고, 사용자가 입력한 값을 특정 자료형으로 받아오는 메서드를 호출하면 되죠.
예를 들어 정수를 입력받을 땐 nextInt(), 문자열은 nextLine()을 사용합니다.
- 📥Scanner sc = new Scanner(System.in); → 키보드 입력을 위한 기본 생성 방식
- 🧾sc.nextInt() → 정수 입력
- ✏️sc.nextLine() → 한 줄 전체 입력
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // Scanner 객체 생성
System.out.print("이름을 입력하세요: ");
String name = sc.nextLine(); // 문자열 입력
System.out.println("안녕하세요, " + name + "님!");
}
}
위 예제는 사용자의 이름을 입력받고, 인사 메시지를 출력하는 간단한 프로그램입니다.
이처럼 Scanner를 활용하면 프로그램에 동적인 입력을 받을 수 있어 사용자 맞춤형 동작을 쉽게 구현할 수 있습니다.
📤 System.out의 역할과 출력 방식
입력과 함께 자바에서 가장 자주 접하게 되는 출력 도구는 바로 System.out입니다.
이는 콘솔 창에 텍스트나 값을 출력할 수 있도록 도와주는 표준 출력 객체로, 가장 기본적인 화면 출력 방식이죠.
자주 사용하는 출력 메서드는 다음과 같습니다.
System.out.print(), System.out.println(), System.out.printf() 등인데요.
각각의 특징을 이해하면 상황에 맞는 출력 방식을 선택하기가 훨씬 쉬워집니다.
- 📘print() → 출력 후 줄바꿈 없이 이어짐
- 📗println() → 출력 후 자동 줄바꿈
- 📙printf() → 형식을 지정하여 출력
public class OutputExample {
public static void main(String[] args) {
System.out.print("안녕하세요 ");
System.out.println("자바 세계에 오신 걸 환영합니다!");
System.out.printf("오늘은 %d월 %d일입니다.\n", 8, 1);
}
}
위 예제를 보면 print()는 줄바꿈 없이 연결되고,
println()은 줄바꿈을 포함하며,
printf()는 서식을 지정해 날짜나 숫자, 문자열 등을 보다 깔끔하게 출력할 수 있죠.
특히 printf()는 실무에서 많이 사용되며,
포맷 문자열을 활용해 원하는 형식으로 정보를 정렬하거나 소수점 이하 자리수를 조절할 수 있는 점이 장점입니다.
💡 자주 사용하는 입력 메서드
자바에서 Scanner 클래스를 사용할 때는 입력받고자 하는 자료형에 따라 적절한 메서드를 선택해야 합니다.
기본적으로 숫자, 문자열, 실수, 불리언 등을 받을 수 있으며, 각각의 타입에 맞는 메서드가 준비되어 있어 매우 유용합니다.
- 🔢nextInt() → 정수 입력
- 📏nextDouble() → 실수 입력
- 🆎next() → 한 단어(공백 이전) 입력
- 📝nextLine() → 한 줄 전체 입력
- ✅nextBoolean() → true/false 불리언 값 입력
입력받는 대상에 따라 메서드를 선택하면 되며, 대부분의 입력은 nextLine()과 nextInt()를 많이 사용하게 됩니다.
단, nextLine()은 이전에 nextInt() 같은 입력이 있었다면 개행 문자 문제로 인해 제대로 동작하지 않는 경우가 많으니 주의가 필요합니다.
⚠️ 주의: nextLine() 사용 전에는 sc.nextLine()을 한 번 더 호출해 버퍼를 비워줘야 합니다.
Scanner sc = new Scanner(System.in);
System.out.print("나이를 입력하세요: ");
int age = sc.nextInt();
sc.nextLine(); // 개행 문자 제거
System.out.print("자기소개 한 줄로 해주세요: ");
String intro = sc.nextLine();
System.out.println("입력 확인 → 나이: " + age + ", 소개: " + intro);
이처럼 각 입력 메서드는 사용 상황에 따라 선택하고, 버퍼 처리에 유의하면 보다 안정적인 코드 작성이 가능합니다.
✅ 입출력 예제 코드로 쉽게 이해하기
이제까지 배운 내용을 바탕으로 실제 코드 예제를 통해 자바의 기본 입력과 출력이 어떻게 동작하는지 확인해볼게요.
이 예제는 이름, 나이, 키 정보를 입력받고 출력해주는 간단한 프로그램입니다.
import java.util.Scanner;
public class UserInfo {
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.print("키(cm)를 입력하세요: ");
double height = sc.nextDouble();
System.out.println();
System.out.println("입력한 정보 요약");
System.out.println("====================");
System.out.printf("이름: %s\n", name);
System.out.printf("나이: %d세\n", age);
System.out.printf("키: %.1fcm\n", height);
}
}
코드를 실행하면 사용자로부터 이름, 나이, 키를 순서대로 입력받고,
마지막에 입력된 값을 보기 좋게 출력해줍니다.
특히 System.out.printf()를 활용해 출력 형식을 지정해주면 더 깔끔하고 전문적인 느낌을 줄 수 있어요.
💎 핵심 포인트:
실전 예제를 통해 Scanner와 System.out의 흐름을 익히면 다양한 입력과 출력 시나리오에 훨씬 더 빠르게 적응할 수 있습니다.
이러한 기본 예제를 반복해 실습하다 보면,
자연스럽게 입력과 출력 구조를 익히게 되고,
실제 개발에서도 응용할 수 있는 실력을 쌓을 수 있게 됩니다.
⚠️ 자주 하는 실수와 디버깅 팁
자바의 입력/출력 기능은 간단해 보이지만, 입문자들이 가장 자주 겪는 오류와 실수들도 함께 따라옵니다.
특히 Scanner를 사용할 때는 메서드 간의 동작 차이를 정확히 이해하지 않으면 예상과 다른 결과가 발생할 수 있어요.
- ⛔nextInt() 다음에 nextLine()을 쓰면 줄바꿈 문자(\n)가 남아서 입력이 무시됨
- 🔁nextLine() 전 sc.nextLine()으로 버퍼 비우기 필요
- 🛑입력받은 값이 숫자인지 문자열인지 구분 없이 쓰면 InputMismatchException 발생 가능
- 🔍System.out.printf() 사용 시 형식 지정자(%d, %s 등) 오류 주의
💡 TIP: 입력을 여러 번 받을 경우에는 각 입력 구간에서 Scanner 객체를 새로 생성하는 것보다, 하나의 Scanner 객체를 재사용하는 것이 더 안정적입니다.
이 외에도 공백 포함 입력, 숫자와 문자열 혼합 입력 등 다양한 상황에서 문제를 겪을 수 있으므로,
항상 입력 흐름을 머릿속으로 시뮬레이션하며 코드를 짜는 습관을 들이면 큰 도움이 됩니다.
디버깅 시에는 입력된 값을 출력해보면서 예상대로 들어왔는지를 확인해보는 것이 가장 빠른 해결 방법이랍니다.
❓ 자주 묻는 질문 (FAQ)
Scanner는 어떤 입력 도구인가요?
nextLine()과 next()의 차이는 뭔가요?
nextInt() 다음에 nextLine()이 안 되는 이유는?
System.out.print와 println의 차이는?
System.out.printf는 언제 써야 하나요?
입력값이 예상과 다르게 들어올 때 어떻게 확인하나요?
Scanner는 매번 새로 생성해야 하나요?
콘솔 입출력만 알아도 실무에 도움이 되나요?
🧾 Scanner와 System.out으로 완성하는 자바 입출력 기초
이번 글에서는 자바에서 가장 기초적이면서도 중요한 입력과 출력에 대해 알아보았습니다.
사용자로부터 값을 입력받기 위해 사용하는 Scanner 클래스와, 결과를 콘솔에 출력하는 System.out의 다양한 메서드는 자바 프로그래밍의 핵심 도구입니다.
기본 개념부터 자주 사용하는 메서드, 예제 코드, 그리고 초보자가 흔히 겪는 실수와 그 해결 방법까지 꼼꼼히 정리해봤습니다.
이제는 Scanner로 입력을 받고, System.out으로 출력하는 데 있어서 훨씬 더 자신감이 생기셨을 거예요.
처음엔 단순해 보이지만, 자바에서 입출력은 이후 파일 처리, 네트워크, UI 구현 등 다양한 응용으로 확장되는 기반이 되므로 꼭 제대로 익혀두시길 추천드립니다.
꾸준한 실습이 실력을 키우는 지름길입니다. 오늘 배운 내용을 직접 따라 해보며 자바 입문의 기초를 단단히 다져보세요!
🏷️ 관련 태그 : 자바입문, 자바입출력, Scanner사용법, System출력, Java기초, 콘솔입력, nextLine오류, 프로그래밍학습, 자바기본문법, Java콘솔