Java přináší různé proudy se svým I/O balíčkem, který pomáhá uživateli provádět všechny vstupně-výstupní operace Java. Tyto proudy podporují všechny typy objektů, datové typy, znaky, soubory atd., aby plně vykonávaly I/O operace. Vstup v Javě může být pomocí určitých metod uvedených níže v článku.
Metody pro vstup v Javě
Existují dvě cesty pomocí kterého můžeme převzít vstup Java od uživatele nebo ze souboru
- Třída BufferedReader
- Třída skenerů
1. Použití třídy BufferedReader pro zadávání řetězců v Javě
Je to jednoduchá třída, která se používá ke čtení posloupnosti znaků. Má jednoduchou funkci čtení, která čte znak, další čtení, která čte pole znaků, a funkci readLine(), která čte řádek.
InputStreamReader() je funkce, která převádí vstupní proud bajtů na proud znaků, takže jej lze číst tak, jak BufferedReader očekává proud postav. BufferedReader může házet zaškrtnuté výjimky.
Níže je uvedena implementace výše uvedeného přístupu:
Jáva
// 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); } }> Výstup
Mayank Solanki 888 Entered String : Mayank Solanki Entered Integer : 888>
Použití třídy čtečky vyrovnávací paměti pro čtení vstupu
Níže je uvedena implementace výše uvedeného přístupu:
Jáva /*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) { } } }> Výstup:
Enter your name: Geeks Name=Geeks>
2. Použití třídy skeneru pro zadávání dat v jazyce Java
Jedná se o pokročilou verzi BufferedReader, která byla přidána v pozdějších verzích Javy. Skener umí číst formátovaný vstup. Má různé funkce pro různé typy datových typů.
- Skener je mnohem snazší číst, protože nemusíme psát hody, protože v něm není žádná výjimka.
- Byl přidán v pozdějších verzích Javy
- Obsahuje předdefinované funkce pro čtení Integer, Character a dalších datových typů.
Syntaxe třídy Scanner
Scanner scn = new Scanner(System.in);>
Import třídy skeneru
' Abychom mohli používat Scanner, musíme importovat třídu Scanner z balíčku util as
import java.util.Scanner;>
Funkce vestavěného skeneru jsou následující:
- Celé číslo: nextInt()
- Plovák: nextFloat()
- Tětiva : next() a nextLine()
Proto v případě Integer a String ve Scanneru nevyžadujeme analýzu, jako jsme požadovali v BufferedReader.
Jáva // 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); } }> Výstup :
Entered String str1 : Geeks Entered String str2 : Geeks For Geeks Entered Integer : 123 Entered FloatValue : 123.090>
Příklad 2:
Jáva // 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); } }> Výstup
Enter your name Geeks Enter your rollno 5 Enter your marks 84.60 Name=Geeks Rollno=5 Marks=84.60>
Rozdíly mezi BufferedReader a Scanner
- BufferedReader je velmi základní způsob, jak číst vstup obecně používaný ke čtení proudu znaků. Poskytuje výhodu oproti skeneru, protože je rychlejší než skener, protože skener provádí spoustu následného zpracování pro analýzu vstupu; jak je vidět v nextInt(), nextFloat()
- BufferedReader je flexibilnější, protože můžeme určit velikost vstupu streamu, který se má číst. (Obecně zde BufferedReader čte větší vstup než Scanner)
- Tyto dva faktory vstupují do hry, když čteme větší vstup. Obecně platí, že třída skeneru slouží jako vstup.
- BufferedReader je preferován, protože je synchronizován. Při práci s více vlákny je to preferováno.
- Pro slušný vstup a snadnou čitelnost. Skener je preferován před BufferedReader.