Как да използвате скенера в Java

How Use Scanner Java



Скенерът в Java е клас в пакета java.util. Този клас има за цел да чете въвеждане от низ, клавиатурата, файла или мрежовия сокет. Тази статия се концентрира само върху четене на въвеждане от клавиатурата и показване на резултата в прозореца на терминала. Подобни идеи могат да се използват за четене на вход от файла или мрежовия канал. Скенерът не печата в прозореца на терминала. За да отпечатате на терминала, използвайте обекта System.out. Лесно е да използвате този обект за отпечатване на терминала, както е илюстрирано по -долу.

За да използвате класа на скенера, той трябва първо да бъде импортиран. След това обект трябва да бъде създаден от него. След като използвате обекта на скенера, той трябва да бъде затворен. Обектът на входния поток, който представлява клавиатурата, е System.in. Скенерът има много методи. В тази статия ще бъдат обяснени само често използваните.







Съдържание на статията



Просто използване на класа на скенера

Следният код изисква от потребителя да въведе изречение и след това показва изречението:



внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Сканиране на скенерObj= новСкенер( Система .в);
Система .навън.println(„Въведете изречение и натиснете Enter:“);

Низ присъда=scanObj.nextLine();
Система .навън.println(присъда);

scanObj.близо();
}
}

Първият ред импортира класа на скенера. В основната функция първият ред създава обект на скенер, използвайки обекта System.in за клавиатурата. Веднага след като обектът на скенера е създаден, той започва да чака въвеждане. Следващият ред отпечатва изявление, като моли потребителя да напише изречение. Следващият ред в кода използва метода nextLine () на обекта на скенера, за да прочете изречението на потребителя, след като той натисне Enter. Редът след, в кода, отпечатва отново изречението в прозореца на терминала. Последният ред затваря обекта на скенера.





Плюване на входния ред в стойности

Следният код разделя входния ред на думи (символи), използвайки интервала като разделител:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Сканиране на скенерObj= новСкенер( Система .в);
Система .навън.println('Въведете ред от символи и натиснете Enter:');

докато(scanObj.hasNext()){
Система .навън.println(scanObj.следващия());
}

scanObj.близо();
}
}

hasNext () и next () са два други метода на обекта на скенера. Когато обектът на скенера чете ред, той го запазва. next () осъществява достъп до следващата лексема (дума). hasNext () връща true, ако има някакъв друг знак, който все още не е достъпен.



За съжаление, потребителят все още се очаква да въведе въвеждане за разделяне и повторно показване с този код. За да прекратите всичко това, натиснете Ctrl+z и трябва да се върнете в командния ред.

В горния код разделителят разделя символи в пространството. Може да се използва друг знак. Следният код използва запетая. Не забравяйте да натиснете Ctrl+z, за да прекратите цикъла, ако тествате кода.

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Сканиране на скенерObj= новСкенер( Система .в);
Система .навън.println('Въведете ред от символи и натиснете Enter:');

scanObj.useDelimiter(',');

докато(scanObj.hasNext()){
Система .навън.println(scanObj.следващия());
}

scanObj.близо();
}
}

Ако тествахте кода, щяхте да забележите, че интервалите в токените са включени като част от жетони (изход). Изразът, scanObj.useDelimiter (,); въведени след четене на входния ред; това е, което прави запетая, разделител.

Четене и валидиране на примитивни типове данни

nextBoolean () метод

В следния код се очаква потребителят да въведе или true, или false без кавичките и след това да натисне клавиша Enter, ако потребителят въведе нещо друго, например да или не, ще се покаже съобщение за грешка.

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.печат(„Над 24 години ли сте? ');
Сканиране на скенерObj= новСкенер( Система .в);

булевабл=scanObj.nextBoolean();
ако (бл== вярно) {
Система .навън.println(„Вие сте над 24“);
}
иначе ако (бл== невярно) {
Система .навън.println(„Вие сте под 24“);
}

scanObj.близо();
}
}

Тъй като java ще издаде съобщение за грешка, стига въведеното да не е вярно или невярно точно, else if е бил използван вместо else.

Разликата между методите, print и println, е, че print очаква въвеждането на текущия ред, докато println очаква въвеждането на следващия ред.

метод nextByte ()

С набора от символи ASCII един знак е един байт. Въпреки това, с някои източни набори от символи, знак може да се състои от повече от един байт. Независимо от набора от символи, методът nextByte чете и потвърждава следващия байт от въведеното. За тази цел може да се използва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.печат('Тип номер<128, press Enter: ');
Сканиране на скенерObj= новСкенер( Система .в);

байтbt=scanObj.nextByte();
Система .навън.println(bt);

scanObj.близо();
}
}

Ако за този код е въведено число, по -голямо от 127 или знак от азбука, ще бъде издадено съобщение за грешка.

Метод nextInt ()

Следващият целочислен знак като вход също може да бъде валидиран и приет. Може да се използва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.печат('Въведете произволно цяло число:');
Сканиране на скенерObj= новСкенер( Система .в);

intникой=scanObj.nextInt();
Система .навън.println(никой);

scanObj.близо();
}
}

Предните или задните интервали са премахнати. За този код ще бъде приета всяка цяло число, включително стойности, по -големи от 127. С тези методи nextXXX (), след като валидирането се провали, се издава съобщение за грешка.

Метод nextBigInteger ()

Изглежда софтуерните инженери никога няма да спрат да измислят нови неща. Голямо цяло число е цяло число, чиято стойност е много по -голяма от тази на цяло число. С Java обаче може да се чете по същия начин като цяло число. Следният код илюстрира това:

внос java.util.Scanner;
внос java.math.BigInteger;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.println('Въведете произволно цяло число за голямо цяло число:');
Сканиране на скенерObj= новСкенер( Система .в);

BigInteger никой=scanObj.nextBigInteger();
Система .навън.println(никой);

scanObj.близо();
}
}

Обърнете внимание на декларацията за импортиране, import java.math.BigInteger ;. Също така имайте предвид, че големият цяло число започва с главни букви B, а не с малки букви b.

Метод nextFloat ()

Следващият плаващ знак като вход също може да бъде валидиран и приет. Може да се използва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.печат('Въведете произволен поплавък:');
Сканиране на скенерObj= новСкенер( Система .в);

плувамникой=scanObj.nextFloat();
Система .навън.println(никой);

scanObj.близо();
}
}

Пример за плаващо число е 23.456. Предните или задните интервали са премахнати.

nextDouble ()

Следващият двоен знак като вход също може да бъде валидиран и приет. Може да се използва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.печат(„Въведете всяко двойно:“);
Сканиране на скенерObj= новСкенер( Система .в);

двойноникой=scanObj.nextDouble();
Система .навън.println(никой);

scanObj.близо();
}
}

Пример за двойно число е 23.456. Двойното число е различно от поплавъка, защото има по -малка граница на грешка. Предните или задните интервали са премахнати.

метод nextLine ()

Методът nextLine () е за низ. Ако низът е входният ред от клавиатурата след натискане на Enter, той може да има символа за нов ред, „ n“. Може да се използва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Система .навън.println('Въведете ред с\н : ');
Сканиране на скенерObj= новСкенер( Система .в);

Низ стр=scanObj.nextLine();
Система .навън.println(стр);

scanObj.близо();
}
}

Забележете, че низовият тип започва с главни букви S, а не с малки букви s.

Методите nextLine (), hasNext () и next () са били използвани по -рано в тази статия. Скенерът има други методи и други примитивни методи за данни - вижте по -късно.

Присвояване на вход на променлива

Входът може да бъде присвоен на променлива, както показва следният код:

внос java.util.Scanner;

обществен класКласа{
обществен статичен невалиденглавен( Низ []аргументи) {
Сканиране на скенерObj= новСкенер( Система .в);

Система .навън.печат('Въведи име: ');
Низ име=scanObj.nextLine();

Система .навън.печат(„Въведете възрастта:“);
intвъзраст=scanObj.nextInt();

Система .навън.печат(„Въведете заплата:“);
двойнозаплата=scanObj.nextDouble();

Система .навън.println(„Име:“ +име+ ', Възраст:' +възраст+ ', Заплата: ' +заплата);

scanObj.близо();
}
}

Заключение

Скенерът в Java е клас в пакета java.util. Този клас има за цел да чете въвеждане от низ, клавиатурата, файла или мрежовия сокет. Тази статия се концентрира главно върху четене на въвеждане от клавиатурата и показване на резултата в прозореца на терминала. Подобни идеи могат да се използват за четене на въвеждане от низ, файл или мрежов канал.

За да прочетете целия ред на въвеждане от клавиатурата, използвайте метода nextLine (). Редът като низ може да бъде разделен на символи, като се използват методите hasNext () и next () и цикълът while. Разделителят по подразбиране за разделяне е пространството, но програмистът може да избере друг разделител. Не забравяйте да натиснете Ctrl+z, за да спрете цикъла while, ако е необходимо. Премахването на предните и задните пространства може да се извърши с помощта на други схеми, които не са разгледани в тази статия. Валидирането на символите може да се извърши и с помощта на други схеми, които не са разгледани в тази статия.

Примитивните стойности могат да бъдат прочетени с помощта на nextBoolean (), nextByte (), nextInt () и т.н. Тези методи nextXXX () извършват валидиране, а също така премахват началните и крайните интервали.

Скенерът на Java има много повече методи. В тази статия обаче е обяснено основното използване на скенера. Изборът на жетон всъщност се извършва с помощта на техники за регулярно изразяване. Използването на техники за редовно изразяване е дискусия, за някой друг път.