logo

Java에서 사용자로부터 입력을 받는 방법은 무엇입니까?

Java는 사용자가 모든 Java 입출력 작업을 수행하는 데 도움이 되는 I/O 패키지와 함께 다양한 스트림을 제공합니다. 이러한 스트림은 I/O 작업을 완전히 실행하기 위해 모든 유형의 객체, 데이터 유형, 문자, 파일 등을 지원합니다. Java의 입력은 기사 아래에 언급된 특정 방법을 사용하여 수행할 수 있습니다.

Java에서 입력을 받는 방법

있다 두 가지 방법 이를 통해 사용자나 파일에서 Java 입력을 가져올 수 있습니다.



  • BufferedReader 클래스
  • 스캐너 클래스

1. Java에서 문자열 입력을 위해 BufferedReader 클래스 사용

일련의 문자를 읽는 데 사용되는 간단한 클래스입니다. 여기에는 문자를 읽는 간단한 read 함수, 문자 배열을 읽는 또 다른 read 및 한 줄을 읽는 readLine() 함수가 있습니다.

InputStreamReader()는 BufferedReader가 예상하는 대로 읽을 수 있도록 바이트의 입력 스트림을 문자 스트림으로 변환하는 함수입니다. 문자의 흐름. BufferedReader는 확인된 예외를 발생시킬 수 있습니다.

다음은 위의 접근 방식을 구현한 것입니다.



자바
// Java Program for taking user // input using BufferedReader Class import java.io.*; class GFG {  // Main Method  public static void main(String[] args)  throws IOException  {  // Creating BufferedReader Object  // InputStreamReader converts bytes to  // stream of character  BufferedReader bfn = new BufferedReader(  new InputStreamReader(System.in));  // String reading internally  String str = bfn.readLine();  // Integer reading internally  int it = Integer.parseInt(bfn.readLine());  // Printing String  System.out.println('Entered String : ' + str);  // Printing Integer  System.out.println('Entered Integer : ' + it);  } }>

산출

Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>

버퍼 리더 클래스를 사용하여 입력 읽기

다음은 위의 접근 방식을 구현한 것입니다.

자바
/*package whatever //do not write package name here */ import java.io.*; import java.io.BufferedReader; import java.io.InputStreamReader; class Easy {  public static void main(String[] args)  {  // creating the instance of class BufferedReader  BufferedReader reader = new BufferedReader(  new InputStreamReader(System.in));  String name;  try {  System.out.println('Enter your name');  name = reader.readLine(); // taking string input  System.out.println('Name=' + name);  }  catch (Exception e) {  }  } }>

산출:



Enter your name: Geeks Name=Geeks>

2. Java에서 입력을 받기 위해 스캐너 클래스 사용

이후 Java 버전에 추가된 BufferedReader의 고급 버전입니다. 스캐너는 형식화된 입력을 읽을 수 있습니다. 다양한 유형의 데이터 유형에 대해 다양한 기능을 제공합니다.

  • 스캐너는 예외가 발생하지 않기 때문에 throw를 작성할 필요가 없기 때문에 읽기가 훨씬 쉽습니다.
  • 이후 버전의 Java에 추가되었습니다.
  • 여기에는 정수, 문자 및 기타 데이터 유형을 읽는 사전 정의된 함수도 포함되어 있습니다.

Scanner 클래스의 구문

Scanner scn = new Scanner(System.in);>

스캐너 클래스 가져오기

' Scanner를 사용하려면 util 패키지에서 Scanner 클래스를 다음과 같이 가져와야 합니다.

import java.util.Scanner;>

내장된 스캐너 기능은 다음과 같습니다:

  • 정수: nextInt()
  • 뜨다: 다음플로트()
  • 끈 : next() 및 nextLine()

따라서 Scanner의 Integer 및 String의 경우 BufferedReader에서 요구했던 것처럼 구문 분석이 필요하지 않습니다.

자바
// Java Program to show how to take // input from user using Scanner Class import java.util.*; class GFG {  public static void main(String[] args)  {  // Scanner definition  Scanner scn = new Scanner(System.in);  // input is a string ( one word )  // read by next() function  String str1 = scn.next();  // print String  System.out.println('Entered String str1 : ' + str1);  // input is a String ( complete Sentence )  // read by nextLine()function  String str2 = scn.nextLine();  // print string  System.out.println('Entered String str2 : ' + str2);  // input is an Integer  // read by nextInt() function  int x = scn.nextInt();  // print integer  System.out.println('Entered Integer : ' + x);  // input is a floatingValue  // read by nextFloat() function  float f = scn.nextFloat();  // print floating value  System.out.println('Entered FloatValue : ' + f);  } }>

출력 :

Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>

예 2:

자바
// Java Program to implement // Scanner Class to take input import java.io.*; import java.util.Scanner; // Driver Class class Easy {  // main function  public static void main(String[] args)  {  // creating the instance of class Scanner  Scanner obj = new Scanner(System.in);  String name;  int rollno;  float marks;  System.out.println('Enter your name');  // taking string input  name = obj.nextLine();  System.out.println('Enter your rollno');  // taking integer input  rollno = obj.nextInt();  System.out.println('Enter your marks');  // taking float input  marks = obj.nextFloat();    // printing the output  System.out.println('Name=' + name);  System.out.println('Rollno=' + rollno);  System.out.println('Marks=' + marks);  } }>

산출

Enter your name Geeks  Enter your rollno 5 Enter your marks 84.60 Name=Geeks  Rollno=5 Marks=84.60>

BufferedReader와 스캐너의 차이점

  • BufferedReader는 일반적으로 문자 스트림을 읽는 데 사용되는 입력을 읽는 매우 기본적인 방법입니다. Scanner는 입력 구문 분석을 위해 많은 후처리를 수행하므로 Scanner보다 빠르기 때문에 Scanner보다 우위에 있습니다. nextInt(), nextFloat()에서 볼 수 있듯이
  • BufferedReader는 읽을 스트림 입력의 크기를 지정할 수 있으므로 더 유연합니다. (일반적으로 BufferedReader가 Scanner보다 더 큰 입력을 읽는 곳이 있습니다)
  • 이 두 가지 요소는 더 큰 입력을 읽을 때 작용합니다. 일반적으로 스캐너 클래스가 입력을 제공합니다.
  • BufferedReader는 동기화되므로 선호됩니다. 여러 스레드를 처리하는 동안 선호됩니다.
  • 적절한 입력과 쉬운 가독성을 위해. Scanner는 BufferedReader보다 선호됩니다.