Како се користи скенер у Јави

How Use Scanner Java



Скенер у Јави је класа у пакету јава.утил. Ова класа има за циљ читање уноса са низа, тастатуре, датотеке или мрежног прикључка. Овај чланак се концентрише само на читање уноса са тастатуре и приказивање резултата у прозору терминала. Сличне идеје се могу користити за читање уноса из датотеке или мрежног канала. Скенер не штампа у прозору терминала. За испис на терминалу користите објект Систем.оут. Овај објекат је једноставан за коришћење за штампање на терминалу, као што је доле илустровано.

Да бисте користили класу Скенер, морате је прво увести. Након тога, објект мора бити направљен од њега. Након коришћења објекта Скенер, мора се затворити. Објекат улазног тока који представља тастатуру је Систем.ин. Скенер има много метода. У овом чланку ће бити објашњене само оне које се често користе.







Садржај чланка



Једноставна употреба класе скенера

Следећи код тражи од корисника да упише реченицу, а затим приказује реченицу:



увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Скенер сцанОбј= НоваСкенер( Систем .у);
Систем .оут.принтлн('Унесите реченицу и притисните Ентер:');

Низ реченица=сцанОбј.нектЛине();
Систем .оут.принтлн(реченица);

сцанОбј.Близу();
}
}

Прва линија увози класу Скенер. У главној функцији, први ред ствара објекат скенера помоћу објекта Систем.ин за тастатуру. Чим се објекат скенера креира, почиње да чека на унос. Следећи ред штампа исказ, тражећи од корисника да упише реченицу. Ред који следи у коду користи метод нектЛине () објекта скенера за читање реченице корисника након што притисне Ентер. Ред после, у коду, поново штампа реченицу у прозору терминала. Последњи ред затвара објекат скенера.





Пљување улазне линије у вредности

Следећи код раздваја улазни ред у речи (токене), користећи размак као граничник:

увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Скенер сцанОбј= НоваСкенер( Систем .у);
Систем .оут.принтлн('Унесите ред жетона и притисните Ентер:');

док(сцанОбј.хасНект()){
Систем .оут.принтлн(сцанОбј.следећи());
}

сцанОбј.Близу();
}
}

хасНект () и нект () су две друге методе објекта скенера. Када објекат скенера чита линију, он је задржава. нект () приступа следећој лексеми (речи). хасНект () враћа труе ако постоји још један токен коме још није приступљено.



Нажалост, од корисника се и даље очекује да унесе унос за раздвајање и поновно приказивање са овим кодом. Да бисте све то завршили, притисните Цтрл+з и требало би да се вратите на командну линију.

У горњем коду, граничник раздваја жетоне у размаку. Може се користити други знак. Следећи код користи зарез. Не заборавите да притиснете Цтрл+з да бисте прекинули петљу ако тестирате код.

увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Скенер сцанОбј= НоваСкенер( Систем .у);
Систем .оут.принтлн('Унесите ред жетона и притисните Ентер:');

сцанОбј.усеДелимитер(',');

док(сцанОбј.хасНект()){
Систем .оут.принтлн(сцанОбј.следећи());
}

сцанОбј.Близу();
}
}

Да сте тестирали код, приметили бисте да су размаци у токенима укључени као део токена (излаз). Израз, сцанОбј.усеДелимитер (,); откуцано након читања улазног реда; то је оно што чини зарез, граничник.

Читање и потврђивање примитивних типова података

нектБоолеан () метод

У следећем коду се очекује да корисник унесе вредност труе или фалсе без наводника, а затим притисне тастер Ентер ако корисник откуца било шта друго, на пример да или не, приказаће се порука о грешци.

увоз јава.утил.Сцаннер;

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

боолеанбл=сцанОбј.нектБоолеан();
ако (бл== истина) {
Систем .оут.принтлн('Имате више од 24 године');
}
елсе ако (бл== лажно) {
Систем .оут.принтлн('Имате мање од 24 године');
}

сцанОбј.Близу();
}
}

Пошто ће јава издати поруку о грешци све док унос није тачан или нетачан, уместо елсе је коришћен елсе иф.

Разлика између метода принт и принтлн је у томе што принт очекује унос у текућој линији, док принтлн очекује унос у следећем реду.

нектБите () метод

Са АСЦИИ скупом знакова, карактер је један бајт. Међутим, са неким источњачким скуповима знакова, знак се може састојати од више од једног бајта. Независно од скупа знакова, нектБите метода чита и потврђује следећи бајт уноса. У ту сврху се може користити следећи код:

увоз јава.утил.Сцаннер;

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

битебт=сцанОбј.нектБите();
Систем .оут.принтлн(бт);

сцанОбј.Близу();
}
}

Ако се за овај код унесе број већи од 127 или знак абецеде, издаће се порука о грешци.

метод нектИнт ()

Следећи целобројни жетон као улаз такође се може потврдити и прихватити. Може се користити следећи код:

увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Систем .оут.принт('Унесите било који цео број:');
Скенер сцанОбј= НоваСкенер( Систем .у);

интна једном=сцанОбј.нектИнт();
Систем .оут.принтлн(на једном);

сцанОбј.Близу();
}
}

Улазни или последњи размаци су уклоњени. За овај код, било која целобројна вредност, укључујући вредности веће од 127, била би прихваћена. Са овим нектКСКСКС () методама, када валидација не успе, издаје се порука о грешци.

нектБигИнтегер () метода

Чини се да софтверски инжењери никада неће престати да смишљају нове ствари. Велики цео број је цео број чија је вредност много већа од вредности целог броја. Међутим, са Јавом се може читати на исти начин као и цео број. Следећи код то илуструје:

увоз јава.утил.Сцаннер;
увоз јава.матх.БигИнтегер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Систем .оут.принтлн('Унесите било који цео број за велики цео број:');
Скенер сцанОбј= НоваСкенер( Систем .у);

БигИнтегер на једном=сцанОбј.нектБигИнтегер();
Систем .оут.принтлн(на једном);

сцанОбј.Близу();
}
}

Обратите пажњу на изјаву о увозу, импорт јава.матх.БигИнтегер ;. Такође, имајте на уму да тип великог целог броја почиње великим словом Б, а не малим словом б.

метод нектФлоат ()

Следећи флоат жетон као улаз такође се може потврдити и прихватити. Може се користити следећи код:

увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Систем .оут.принт('Унесите било који флоат:');
Скенер сцанОбј= НоваСкенер( Систем .у);

пловакна једном=сцанОбј.нектФлоат();
Систем .оут.принтлн(на једном);

сцанОбј.Близу();
}
}

Пример плутајућег броја је 23.456. Улазни или последњи размаци су уклоњени.

нектДоубле ()

Следећи двоструки токен као улаз такође се може потврдити и прихватити. Може се користити следећи код:

увоз јава.утил.Сцаннер;

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

дуплона једном=сцанОбј.нектДоубле();
Систем .оут.принтлн(на једном);

сцанОбј.Близу();
}
}

Пример двоструког броја је 23.456. Двоструки број се разликује од пловка јер има мању маргину грешке. Улазни или последњи размаци су уклоњени.

метод нектЛине ()

Метод нектЛине () је за стринг. Ако је низ уносна линија са тастатуре након притиска на Ентер, може имати знак новог реда, „ н“. Може се користити следећи код:

увоз јава.утил.Сцаннер;

јавности класаКласа{
јавности статичан празнинаглавни( Низ []аргс) {
Систем .оут.принтлн('Унесите линију која има\н: ');
Скенер сцанОбј= НоваСкенер( Систем .у);

Низ п=сцанОбј.нектЛине();
Систем .оут.принтлн(п);

сцанОбј.Близу();
}
}

Уочите да тип низа почиње великим словом С, а не малим с.

Методе нектЛине (), хасНект () и нект () су претходно коришћене у овом чланку. Скенер има друге методе и друге примитивне методе података - погледајте касније.

Додељивање уноса променљивој

Улаз се може доделити променљивој, како показује следећи код:

увоз јава.утил.Сцаннер;

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

Систем .оут.принт('Унесите име: ');
Низ име=сцанОбј.нектЛине();

Систем .оут.принт('Унесите старост:');
интстарост=сцанОбј.нектИнт();

Систем .оут.принт('Унесите зараду:');
дуплоплата=сцанОбј.нектДоубле();

Систем .оут.принтлн('Име:' +име+ ', Године:' +старост+ ', Плата: ' +плата);

сцанОбј.Близу();
}
}

Закључак

Скенер у Јави је класа у пакету јава.утил. Ова класа има за циљ читање уноса са низа, тастатуре, датотеке или мрежног прикључка. Овај чланак се углавном концентрирао на читање уноса са тастатуре и приказивање резултата у прозору терминала. Сличне идеје се могу користити за читање уноса са низа, датотеке или мрежног канала.

Да бисте прочитали целу линију уноса са тастатуре, користите метод нектЛине (). Линија као низ може се поделити на жетоне, користећи методе хасНект () и нект (), а вхиле петљу. Подразумевани граничник за раздвајање је простор, али програмер може изабрати неки други граничник. Не заборавите да притиснете Цтрл+з да бисте зауставили вхиле петљу, ако је потребно. Уклањање почетних и задњих размака може се извршити помоћу других шема које нису обрађене у овом чланку. Валидација токена се такође може извршити помоћу других шема које нису обрађене у овом чланку.

Примитивне вредности се могу читати помоћу нектБоолеан (), нектБите (), нектИнт () итд. Ове методе нектКСКСКС () врше валидацију, а такође уклањају и почетне и крајње размаке.

Јава скенер има много више метода. Међутим, у овом чланку је објашњена основна употреба скенера. Одабир жетона се заправо врши помоћу техника регуларног израза. Употреба техника регуларног изражавања је дискусија, неки други пут.