Kaip naudotis skaitytuvu „Java“

How Use Scanner Java



„Java“ skaitytuvas yra „Java“ paketo klasė. Šios klasės tikslas yra skaityti įvestį iš eilutės, klaviatūros, failo ar tinklo lizdo. Šiame straipsnyje daugiausia dėmesio skiriama tik klaviatūros įvesties skaitymui ir rezultato rodymui terminalo lange. Panašios idėjos gali būti naudojamos skaitant įvestį iš failo ar tinklo kanalo. Skaitytuvas nespausdina į terminalo langą. Norėdami spausdinti į terminalą, naudokite objektą System.out. Naudojant šį objektą paprasta spausdinti į terminalą, kaip parodyta žemiau.

Jei norite naudoti „Scanner“ klasę, pirmiausia ją reikia importuoti. Po to reikia iš jo parodyti objektą. Panaudojus „Scanner“ objektą, jis turi būti uždarytas. Įvesties srauto objektas, vaizduojantis klaviatūrą, yra System.in. Skaitytuvas turi daug būdų. Šiame straipsnyje bus paaiškinta tik dažniausiai naudojama.







Straipsnio turinys



Paprastas skaitytuvų klasės naudojimas

Šis kodas prašo vartotojo įvesti sakinį, tada rodomas sakinys:



importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);
Sistema .išeiti.println(„Įveskite sakinį ir paspauskite„ Enter “:);

Styginė sakinys=scanObj.nextLine();
Sistema .išeiti.println(sakinys);

scanObj.Uždaryti();
}
}

Pirmoje eilutėje importuojama „Scanner“ klasė. Pagrindinėje funkcijoje pirmoje eilutėje sukuriamas skaitytuvo objektas, naudojant klaviatūros objektą „System.in“. Kai tik sukurtas skaitytuvo objektas, jis pradeda laukti įvesties. Kitoje eilutėje spausdinamas teiginys, kuriame prašoma vartotojo įvesti sakinį. Eilutėje, esančioje kode, naudojamas skaitytuvo objekto „nextLine ()“ metodas, kad nuskaitytų vartotojo sakinį po to, kai jis paspaudžia „Enter“. Eilutė po kodo termino lange perspausdina sakinį. Paskutinė eilutė uždaro skaitytuvo objektą.





Įvesties linijos suskaidymas į vertybes

Šis kodas padalija įvesties eilutę į žodžius (žetonus), naudodamas tarpą kaip ribotuvą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);
Sistema .išeiti.println(„Įveskite žetonų eilutę ir paspauskite„ Enter “:);

tuo tarpu(scanObj.hasNext()){
Sistema .išeiti.println(scanObj.Kitas());
}

scanObj.Uždaryti();
}
}

hasNext () ir next () yra du kiti skaitytuvo objekto metodai. Kai skaitytuvo objektas skaito eilutę, jis ją išsaugo. next () pasiekia kitą žetoną (žodį). hasNext () grąžina true, jei yra dar vienas prieigos raktas, kurio dar nepasiekėte.



Deja, tikimasi, kad vartotojas vis tiek įves įvestį, kad padalintų ir vėl rodytų šį kodą. Norėdami baigti visa tai, paspauskite Ctrl+z ir turėtumėte grįžti į komandų eilutę.

Pirmiau pateiktame kode skiriamasis ženklas skiria žetonus erdvėje. Galima naudoti kitą simbolį. Šis kodas naudoja kablelį. Nepamirškite paspausti Ctrl+z, kad užbaigtumėte ciklą, jei išbandysite kodą.

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);
Sistema .išeiti.println(„Įveskite žetonų eilutę ir paspauskite„ Enter “:);

scanObj.useDelimiter(',');

tuo tarpu(scanObj.hasNext()){
Sistema .išeiti.println(scanObj.Kitas());
}

scanObj.Uždaryti();
}
}

Jei išbandytumėte kodą, būtumėte pastebėję, kad tarpai žetonuose buvo įtraukti į žetonų dalį (išvestį). Išraiška, scanObj.useDelimiter (,); įvedėte po to, kai buvo perskaityta įvesties eilutė; tai daro kablelį, skiriamąjį ženklą.

Primityvių duomenų tipų skaitymas ir patvirtinimas

nextBoolean () metodas

Toliau pateiktame kode vartotojas turėtų įvesti teisingą arba klaidingą be kabučių ir paspausti klavišą Enter, jei vartotojas įveda ką nors kita, pvz., Taip arba ne, bus rodomas klaidos pranešimas.

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.spausdinti('Ar tau virš 24? ');
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

loginisbl=scanObj.nextBoolean();
jei (bl== tiesa) {
Sistema .išeiti.println(„Jums daugiau nei 24“);
}
Kitas jei (bl== klaidinga) {
Sistema .išeiti.println(„Jūs esate jaunesnis nei 24“);
}

scanObj.Uždaryti();
}
}

Kadangi „Java“ pateiks klaidos pranešimą tol, kol įvestis nebus teisinga arba netiksli, „else“ buvo naudojamas vietoj „else“.

Skirtumas tarp metodų, spausdinimo ir spausdinimo, yra tas, kad spausdinimas tikisi įvesties dabartinėje eilutėje, o „println“ - įvesties kitoje eilutėje.

nextByte () metodas

Naudojant ASCII simbolių rinkinį, simbolis yra vienas baitas. Tačiau naudojant kai kuriuos Rytų simbolių rinkinius simbolį gali sudaryti daugiau nei vienas baitas. Nepriklausomai nuo simbolių rinkinio, „nextByte“ metodas skaito ir patvirtina kitą įvesties baitą. Šiam tikslui galima naudoti šį kodą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.spausdinti('Tipo numeris<128, press Enter: ');
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

baitasbt=scanObj.nextByte();
Sistema .išeiti.println(bt);

scanObj.Uždaryti();
}
}

Jei šiam kodui įvedamas didesnis nei 127 skaičius arba abėcėlės simbolis, bus išsiųstas klaidos pranešimas.

nextInt () metodas

Kitas sveiko skaičiaus prieigos raktas kaip įvestis taip pat gali būti patvirtintas ir priimtas. Galima naudoti šį kodą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.spausdinti(„Įveskite bet kokį sveikąjį skaičių:“);
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

tarptant vieno=scanObj.nextInt();
Sistema .išeiti.println(ant vieno);

scanObj.Uždaryti();
}
}

Pagrindinės arba galinės vietos buvo pašalintos. Šio kodo atveju būtų priimta bet kokia sveikojo skaičiaus vertė, įskaitant didesnes nei 127. Taikant šiuos „nextXXX“ () metodus, kai patvirtinimas nepavyksta, pateikiamas klaidos pranešimas.

nextBigInteger () metodas

Atrodo, kad programinės įrangos inžinieriai niekada nenustos sugalvoti naujų dalykų. Didelis sveikasis skaičius yra sveikasis skaičius, kurio vertė yra daug didesnė nei sveikojo skaičiaus. Tačiau naudojant „Java“ ją galima skaityti taip pat, kaip ir sveikąjį skaičių. Toliau pateiktas kodas tai iliustruoja:

importas java.util.Scanner;
importas java.math.BigInteger;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.println(„Įveskite bet kokį sveikąjį skaičių dideliam sveikam skaičiui:“);
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

„BigInteger“ ant vieno=scanObj.nextBigInteger();
Sistema .išeiti.println(ant vieno);

scanObj.Uždaryti();
}
}

Atkreipkite dėmesį į importo pareiškimą, importuokite java.math.BigInteger ;. Taip pat atkreipkite dėmesį, kad didžiojo sveikojo skaičiaus tipas pradedamas didžiosiomis raidėmis B, o ne mažosiomis raidėmis b.

nextFloat () metodas

Kitas įvesties plūdės žetonas taip pat gali būti patvirtintas ir priimtas. Galima naudoti šį kodą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.spausdinti('Įveskite bet kokią plūdę:');
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

plūdėant vieno=scanObj.nextFloat();
Sistema .išeiti.println(ant vieno);

scanObj.Uždaryti();
}
}

Plūdės skaičiaus pavyzdys yra 23.456. Pagrindinės arba galinės vietos buvo pašalintos.

nextDouble ()

Kitas dvigubas žetonas kaip įvestis taip pat gali būti patvirtintas ir priimtas. Galima naudoti šį kodą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.spausdinti(„Įveskite bet kurį dvigubą:“);
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

dvigubasant vieno=scanObj.nextDouble();
Sistema .išeiti.println(ant vieno);

scanObj.Uždaryti();
}
}

Dvigubo skaičiaus pavyzdys yra 23.456. Dvigubas skaičius skiriasi nuo plūdės, nes jis turi mažiau klaidų. Pagrindinės arba galinės vietos buvo pašalintos.

nextLine () metodas

NextLine () metodas skirtas eilutei. Jei eilutė yra klaviatūros įvesties eilutė paspaudus „Enter“, ji gali turėti naujos eilutės simbolį „ n“. Galima naudoti šį kodą:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Sistema .išeiti.println('Įveskite eilutę, kurioje yra\n: ');
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

Styginė p=scanObj.nextLine();
Sistema .išeiti.println(p);

scanObj.Uždaryti();
}
}

Atkreipkite dėmesį, kad eilutės tipas prasideda didžiosiomis raidėmis S, o ne mažosiomis s.

Metodai nextLine (), hasNext () ir next () jau buvo naudojami šiame straipsnyje. Skaitytuvas turi kitų metodų ir kitų primityvių duomenų metodų - žr. Vėliau.

Įvesties priskyrimas kintamajam

Įvestį galima priskirti kintamajam, kaip rodo šis kodas:

importas java.util.Scanner;

viešas klasėKlasė{
viešas statinis tuštumapagrindinis( Styginė []args) {
Skaitytuvo nuskaitymasObj= naujasSkaitytuvas( Sistema .į);

Sistema .išeiti.spausdinti('Įveskite vardą: ');
Styginė vardas=scanObj.nextLine();

Sistema .išeiti.spausdinti('Įveskite amžių:');
tarptamžiaus=scanObj.nextInt();

Sistema .išeiti.spausdinti('Įveskite atlyginimą:');
dvigubasatlyginimas=scanObj.nextDouble();

Sistema .išeiti.println('Vardas: ' +vardas+ ', Amžius:' +amžiaus+ ', Atlyginimas:' +atlyginimas);

scanObj.Uždaryti();
}
}

Išvada

„Java“ skaitytuvas yra „Java“ paketo klasė. Šios klasės tikslas yra skaityti įvestį iš eilutės, klaviatūros, failo ar tinklo lizdo. Šiame straipsnyje daugiausia dėmesio buvo skiriama klaviatūros įvesties skaitymui ir rezultato rodymui terminalo lange. Panašios idėjos gali būti naudojamos skaitant įvestį iš eilutės, failo ar tinklo kanalo.

Norėdami perskaityti visą klaviatūros įvesties eilutę, naudokite nextLine () metodą. Eilutę kaip eilutę galima padalyti į žetonus, naudojant metodus hasNext () ir next (), ir ciklą while. Numatytasis dalijimo ribotuvas yra tarpas, tačiau programuotojas gali pasirinkti kitą skiriamąjį ženklą. Nepamirškite padaryti Ctrl+z, kad sustabdytumėte ciklo ciklą, jei reikia. Priekines ir galines erdves galima pašalinti naudojant kitas šiame straipsnyje nenagrinėtas schemas. Žetonų patvirtinimas taip pat gali būti atliktas naudojant kitas šiame straipsnyje nenagrinėtas schemas.

Primityviąsias vertes galima skaityti naudojant nextBoolean (), nextByte (), nextInt () ir tt Šie nextXXX () metodai patvirtina, taip pat pašalina priekines ir galines tarpus.

„Java“ skaitytuvas turi daug daugiau metodų. Tačiau šiame straipsnyje paaiškintas pagrindinis skaitytuvo naudojimas. Ženklo pasirinkimas iš tikrųjų atliekamas naudojant įprastos išraiškos metodus. Taisyklingos išraiškos metodų naudojimas yra diskusija, kurį laiką.