메뉴 닫기

자바 기본 입출력 완전 정복, Scanner와 System.out 사용법 총정리


자바 기본 입출력 완전 정복, 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() → 한 줄 전체 입력

CODE BLOCK
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() → 형식을 지정하여 출력

CODE BLOCK
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()을 한 번 더 호출해 버퍼를 비워줘야 합니다.

CODE BLOCK
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);

이처럼 각 입력 메서드는 사용 상황에 따라 선택하고, 버퍼 처리에 유의하면 보다 안정적인 코드 작성이 가능합니다.


입출력 예제 코드로 쉽게 이해하기

이제까지 배운 내용을 바탕으로 실제 코드 예제를 통해 자바의 기본 입력과 출력이 어떻게 동작하는지 확인해볼게요.
이 예제는 이름, 나이, 키 정보를 입력받고 출력해주는 간단한 프로그램입니다.

CODE BLOCK
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()를 활용해 출력 형식을 지정해주면 더 깔끔하고 전문적인 느낌을 줄 수 있어요.

💎 핵심 포인트:
실전 예제를 통해 ScannerSystem.out의 흐름을 익히면 다양한 입력과 출력 시나리오에 훨씬 더 빠르게 적응할 수 있습니다.

이러한 기본 예제를 반복해 실습하다 보면,
자연스럽게 입력과 출력 구조를 익히게 되고,
실제 개발에서도 응용할 수 있는 실력을 쌓을 수 있게 됩니다.







⚠️ 자주 하는 실수와 디버깅 팁

자바의 입력/출력 기능은 간단해 보이지만, 입문자들이 가장 자주 겪는 오류와 실수들도 함께 따라옵니다.
특히 Scanner를 사용할 때는 메서드 간의 동작 차이를 정확히 이해하지 않으면 예상과 다른 결과가 발생할 수 있어요.

  • nextInt() 다음에 nextLine()을 쓰면 줄바꿈 문자(\n)가 남아서 입력이 무시됨
  • 🔁nextLine() 전 sc.nextLine()으로 버퍼 비우기 필요
  • 🛑입력받은 값이 숫자인지 문자열인지 구분 없이 쓰면 InputMismatchException 발생 가능
  • 🔍System.out.printf() 사용 시 형식 지정자(%d, %s 등) 오류 주의

💡 TIP: 입력을 여러 번 받을 경우에는 각 입력 구간에서 Scanner 객체를 새로 생성하는 것보다, 하나의 Scanner 객체를 재사용하는 것이 더 안정적입니다.

이 외에도 공백 포함 입력, 숫자와 문자열 혼합 입력 등 다양한 상황에서 문제를 겪을 수 있으므로,
항상 입력 흐름을 머릿속으로 시뮬레이션하며 코드를 짜는 습관을 들이면 큰 도움이 됩니다.

디버깅 시에는 입력된 값을 출력해보면서 예상대로 들어왔는지를 확인해보는 것이 가장 빠른 해결 방법이랍니다.


자주 묻는 질문 (FAQ)

Scanner는 어떤 입력 도구인가요?
Scanner는 자바에서 키보드, 파일 등 다양한 소스로부터 데이터를 입력받기 위해 사용하는 클래스입니다. 특히 사용자 입력을 처리하는 데 많이 사용되며, java.util 패키지에 포함되어 있어 import가 필요합니다.
nextLine()과 next()의 차이는 뭔가요?
next()는 공백 이전의 한 단어만 읽고, nextLine()은 한 줄 전체를 입력받습니다. 문장을 입력받아야 할 때는 반드시 nextLine()을 사용해야 합니다.
nextInt() 다음에 nextLine()이 안 되는 이유는?
nextInt()는 숫자만 읽고 개행 문자(\n)는 버퍼에 남기기 때문에, 다음 nextLine()이 이 개행을 읽고 넘어가게 됩니다. 이를 피하려면 nextLine()을 한 번 더 호출해 버퍼를 비워줘야 합니다.
System.out.print와 println의 차이는?
print()는 출력 후 줄바꿈이 없고, println()은 출력 후 자동으로 줄바꿈이 들어갑니다. 따라서 println()은 출력 내용을 구분 지을 때 유용합니다.
System.out.printf는 언제 써야 하나요?
printf는 문자열 포맷을 지정해 출력할 수 있도록 도와줍니다. 예를 들어 소수점 자리수나 정렬된 형식으로 값을 출력할 때 적합합니다.
입력값이 예상과 다르게 들어올 때 어떻게 확인하나요?
입력 직후에 출력해보는 것이 가장 확실한 방법입니다. System.out.println()을 통해 변수 값을 중간중간 확인하면서 문제를 추적하세요.
Scanner는 매번 새로 생성해야 하나요?
Scanner는 일반적으로 프로그램 초기에 한 번만 생성하고, 이후 재사용하는 방식이 가장 안정적입니다. 매번 새로 생성하면 자원 낭비가 발생할 수 있습니다.
콘솔 입출력만 알아도 실무에 도움이 되나요?
콘솔 입출력은 자바의 기본을 다지는 데 필수이며, 로직 디버깅과 간단한 사용자 입력 처리에도 유용하게 쓰입니다. GUI나 웹 개발을 할 때도 기본 원리를 이해하고 있어야 문제 해결이 쉬워집니다.



🧾 Scanner와 System.out으로 완성하는 자바 입출력 기초

이번 글에서는 자바에서 가장 기초적이면서도 중요한 입력과 출력에 대해 알아보았습니다.
사용자로부터 값을 입력받기 위해 사용하는 Scanner 클래스와, 결과를 콘솔에 출력하는 System.out의 다양한 메서드는 자바 프로그래밍의 핵심 도구입니다.

기본 개념부터 자주 사용하는 메서드, 예제 코드, 그리고 초보자가 흔히 겪는 실수와 그 해결 방법까지 꼼꼼히 정리해봤습니다.
이제는 Scanner로 입력을 받고, System.out으로 출력하는 데 있어서 훨씬 더 자신감이 생기셨을 거예요.

처음엔 단순해 보이지만, 자바에서 입출력은 이후 파일 처리, 네트워크, UI 구현 등 다양한 응용으로 확장되는 기반이 되므로 꼭 제대로 익혀두시길 추천드립니다.
꾸준한 실습이 실력을 키우는 지름길입니다. 오늘 배운 내용을 직접 따라 해보며 자바 입문의 기초를 단단히 다져보세요!


🏷️ 관련 태그 : 자바입문, 자바입출력, Scanner사용법, System출력, Java기초, 콘솔입력, nextLine오류, 프로그래밍학습, 자바기본문법, Java콘솔