В този урок ще научим за Java Scanner и неговите методи с помощта на примери.
В Scanner
класа на java.util
опаковката се използва за четене на входните данни от различни източници, като входящи потоци, потребители, файлове и т.н. Нека вземем един пример.
Пример 1: Прочетете ред текст с помощта на скенер
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // takes input from the keyboard String name = input.nextLine(); // prints the name System.out.println("My name is " + name); // closes the scanner input.close(); ) )
Изход
Въведете името си: Келвин Казвам се Келвин
В горния пример обърнете внимание на реда
Scanner input = new Scanner(System.in);
Тук създадохме обект с Scanner
име на вход.
В System.in
параметър се използва да вход от стандартния вход. Работи точно като вземане на входове от клавиатурата.
След това използвахме nextLine()
метода на Scanner
класа, за да прочетем ред текст от потребителя.
Сега, когато имате някаква представа за това Scanner
, нека разгледаме повече за него.
Импортиране на скенер клас
Както виждаме от горния пример, трябва да импортираме java.util.Scanner
пакета, преди да можем да използваме Scanner
класа.
import java.util.Scanner;
За да научите повече за импортирането на пакети, посетете Java Packages.
Създайте обект на скенер в Java
След като импортираме пакета, ето как можем да създаваме Scanner
обекти.
// read input from the input stream Scanner sc1 = new Scanner(InputStream input); // read input from files Scanner sc2 = new Scanner(File file); // read input from a string Scanner sc3 = new Scanner(String str);
Тук създадохме обекти от Scanner
класа, които ще четат съответно входни данни от InputStream, File и String.
Методи на Java Scanner за вземане на вход
В Scanner
класа предоставя различни методи, които ни позволяват да се чете входа от различни типове.
Метод | Описание |
---|---|
nextInt() | чете int стойност от потребителя |
nextFloat() | чете float стойност от потребителя |
nextBoolean() | чете boolean стойност от потребителя |
nextLine() | чете ред текст от потребителя |
next() | чете дума от потребителя |
nextByte() | чете byte стойност от потребителя |
nextDouble() | чете doubl e стойност от потребителя |
nextShort() | чете short стойност от потребителя |
nextLong() | чете long стойност от потребителя |
Пример 2: Java Scanner nextInt ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates a Scanner object Scanner input = new Scanner(System.in); System.out.println("Enter an integer: "); // reads an int value int data1 = input.nextInt(); System.out.println("Using nextInt(): " + data1); input.close(); ) )
Изход
Въведете цяло число: 22 Използване на nextInt (): 22
В горния пример използвахме nextInt()
метода за четене на цяло число.
Пример 3: Java Scanner nextDouble ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter Double value: "); // reads the double value double value = input.nextDouble(); System.out.println("Using nextDouble(): " + value); input.close(); ) )
Изход
Въведете Double value: 33.33 Използване на nextDouble (): 33.33
В горния пример използвахме nextDouble()
метода за четене на стойност с плаваща запетая.
Пример 4: Java Scanner next ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // reads the entire word String value = input.next(); System.out.println("Using next(): " + value); input.close(); ) )
Изход
Въведете името си: Джони Уокър Използвайки следващия (): Джони
В горния пример използвахме next()
метода за четене на низ от потребителя.
Тук предоставихме пълното име. Въпреки това, next()
методът чете само първото име.
Това е така, защото next()
методът чете въведени данни до интервала . След като се срещне празното пространство , той връща низа (с изключение на празното пространство).
Пример 5: Java Scanner nextLine ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // reads the entire line String value = input.nextLine(); System.out.println("Using nextLine(): " + value); input.close(); ) )
Изход
Въведете името си: Джони Уокър Използвайки nextLine (): Джони Уокър
В първия пример използвахме nextLine()
метода за четене на низ от потребителя.
За разлика next()
от това nextLine()
методът чете целия ред на въвеждане, включително интервали. Методът се прекратява, когато срещне знак от следващ ред ,.
Recommended Reading: Java Scanner skipping the nextLine().
Java Scanner with BigInteger and BigDecimal
Java scanner can also be used to read the big integer and big decimal numbers.
- nextBigInteger() - reads the big integer value from the user
- nextBigDecimal() - reads the big decimal value from the user
Example 4: Read BigInteger and BigDecimal
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter a big integer: "); // reads the big integer BigInteger value1 = input.nextBigInteger(); System.out.println("Using nextBigInteger(): " + value1); System.out.print("Enter a big decimal: "); // reads the big decimal BigDecimal value2 = input.nextBigDecimal(); System.out.println("Using nextBigDecimal(): " + value2); input.close(); ) )
Output
Enter a big integer: 987654321 Using nextBigInteger(): 987654321 Enter a big decimal: 9.55555 Using nextBigDecimal(): 9.55555
In the above example, we have used the java.math.BigInteger
and java.math.BigDecimal
package to read BigInteger
and BigDecimal
respectively.
Working of Java Scanner
В Scanner
класа чете цялата линия и разделя линията в жетони. Токените са малки елементи, които имат някакво значение за Java компилатора. Например,
Да предположим, че има входен низ:
He is 22
В този случай обектът на скенера ще прочете целия ред и ще раздели низа на символи: „ Той “, „ е “ и „ 22 “. След това обектът се итерира над всеки маркер и чете всеки маркер, използвайки своите различни методи.
Забележка : По подразбиране празното пространство се използва за разделяне на маркери.