logo

Як отримати дані від користувача в Java?

Java надає різноманітні потоки зі своїм пакетом введення/виведення, який допомагає користувачеві виконувати всі операції введення-виведення Java. Ці потоки підтримують усі типи об’єктів, типи даних, символи, файли тощо для повного виконання операцій введення/виведення. Вводити в Java можна певними методами, згаданими нижче в статті.

Методи введення в Java

Є двома способами за допомогою якого ми можемо приймати дані Java від користувача або з файлу

  • Клас BufferedReader
  • Клас сканера

1. Використання класу BufferedReader для введення рядків у Java

Це простий клас, який використовується для читання послідовності символів. Він має просту функцію read, яка читає символ, іншу функцію read, яка читає масив символів, і функцію readLine(), яка читає рядок.



InputStreamReader() — це функція, яка перетворює вхідний потік байтів у потік символів, щоб його можна було прочитати, оскільки BufferedReader очікує потік символів. BufferedReader може створювати перевірені винятки.

алгоритм бінарного пошуку

Нижче наведено реалізацію вищезазначеного підходу:

Java
// 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>

Використання класу читача буфера для читання вхідних даних

Нижче наведено реалізацію вищезазначеного підходу:

Java
/*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) {  }  } }>

Вихід:

vlc media player завантажити youtube
Enter your name: Geeks Name=Geeks>

2. Використання класу Scanner для введення даних у Java

Це розширена версія BufferedReader, яка була додана в пізніших версіях Java. Сканер може читати відформатований вхід. Він має різні функції для різних типів типів даних.

  • Сканер набагато легше читати, оскільки нам не потрібно писати викиди, оскільки він не створює винятків.
  • Він був доданий у пізніших версіях Java
  • Він також містить попередньо визначені функції для читання цілих чисел, символів та інших типів даних.

Синтаксис класу Scanner

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

Імпорт класу сканера

' Щоб використовувати Scanner, нам потрібно імпортувати клас Scanner з пакета util as

import java.util.Scanner;>

Функції вбудованого сканера такі:

  • Ціле число: nextInt()
  • Поплавок: nextFloat()
  • Рядок: next() і nextLine()

Отже, у випадку Integer і String у Scanner ми не потребуємо синтаксичного аналізу, як ми вимагали в BufferedReader.

java і swing
Java
// 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
// 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 і Scanner

  • BufferedReader — це простий спосіб читання введення, який зазвичай використовується для читання потоку символів. Це дає перевагу над Scanner, оскільки він швидший, ніж Scanner, оскільки Scanner виконує багато пост-обробки для аналізу вхідних даних; як показано в nextInt(), nextFloat()
  • BufferedReader є більш гнучким, оскільки ми можемо вказати розмір вхідного потоку для читання. (Загалом, саме там BufferedReader читає більші вхідні дані, ніж Scanner)
  • Ці два фактори вступають у гру, коли ми читаємо більші вхідні дані. Загалом, клас Scanner обслуговує вхідні дані.
  • BufferedReader є кращим, оскільки він синхронізований. При роботі з кількома потоками це є кращим.
  • Для гідного введення та легкої читабельності. Сканер має перевагу над BufferedReader.