Kā lietot skeneri Java

How Use Scanner Java



Java skeneris ir java.util pakotnes klase. Šīs klases mērķis ir lasīt ievadi no virknes, tastatūras, faila vai tīkla ligzdas. Šis raksts koncentrējas tikai uz ievades nolasīšanu no tastatūras un rezultāta parādīšanu termināļa logā. Līdzīgas idejas var izmantot, lai nolasītu ievadi no faila vai tīkla kanāla. Skeneris nedrukā termināļa logā. Lai drukātu uz termināli, izmantojiet objektu System.out. Šo objektu ir vienkārši izmantot, lai drukātu uz termināli, kā parādīts zemāk.

Lai izmantotu skenera klasi, tā vispirms ir jāimportē. Pēc tam no tā jāizveido objekts. Pēc skenera objekta izmantošanas tas ir jāaizver. Ievades straumes objekts, kas attēlo tastatūru, ir System.in. Skenerim ir daudz metožu. Šajā rakstā tiks izskaidroti tikai visbiežāk izmantotie.







Raksta saturs



Vienkārša skeneru klases izmantošana

Šis kods lūdz lietotājam ievadīt teikumu, un pēc tam tas parāda teikumu:



importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);
Sistēma .ārā.println('Ierakstiet teikumu un nospiediet Enter:');

Stīga teikums=scanObj.nextLine();
Sistēma .ārā.println(teikums);

scanObj.aizvērt();
}
}

Pirmā rinda importē skenera klasi. Galvenajā funkcijā pirmā rinda izveido skenera objektu, izmantojot tastatūras objektu System.in. Tiklīdz skenera objekts ir izveidots, tas sāk gaidīt ievadi. Nākamajā rindā tiek izdrukāts paziņojums, kurā lietotājam tiek lūgts ievadīt teikumu. Rindā, kas seko kodam, tiek izmantota skenera objekta metode nextLine (), lai izlasītu lietotāja teikumu pēc tam, kad viņš nospiež taustiņu Enter. Rinda aiz koda termināla logā atkārtoti izdrukā teikumu. Pēdējā rinda aizver skenera objektu.





Ievades līnijas sadalīšana vērtībās

Šis kods sadala ievades rindu vārdos (žetonos), izmantojot atstarpi kā norobežotāju:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);
Sistēma .ārā.println('Ierakstiet žetonu rindu un nospiediet taustiņu Enter:');

kamēr(scanObj.hasNext()){
Sistēma .ārā.println(scanObj.Nākamais());
}

scanObj.aizvērt();
}
}

hasNext () un next () ir divas citas skenera objekta metodes. Kad skenera objekts nolasa līniju, tas to saglabā. next () piekļūst nākamajam marķierim (vārdam). hasNext () atgriež vērtību true, ja ir kāds cits marķieris, kuram vēl nav piekļūts.



Diemžēl lietotājam joprojām ir jāievada ievade, lai sadalītu un atkārtoti parādītu šo kodu. Lai to pabeigtu, nospiediet Ctrl+z, un jums vajadzētu atgriezties komandu uzvednē.

Iepriekš minētajā kodā norobežotājs atdala žetonus telpā. Var izmantot citu rakstzīmi. Šis kods izmanto komatu. Neaizmirstiet nospiest Ctrl+z, lai pārtrauktu ciklu, ja pārbaudāt kodu.

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);
Sistēma .ārā.println('Ierakstiet žetonu rindu un nospiediet taustiņu Enter:');

scanObj.useDelimiter(',');

kamēr(scanObj.hasNext()){
Sistēma .ārā.println(scanObj.Nākamais());
}

scanObj.aizvērt();
}
}

Ja pārbaudītu kodu, jūs būtu pamanījis, ka atstarpes žetonos ir iekļautas žetonu sastāvā (izvade). Izteiksme, scanObj.useDelimiter (,); jāievada pēc ievades rindas nolasīšanas; tas ir tas, kas padara komatu, norobežotāju.

Primitīvo datu tipu lasīšana un apstiprināšana

nextBoolean () metode

Turpmākajā kodā lietotājam ir jāievada patiesa vai nepatiesa informācija bez pēdiņām un pēc tam jānospiež taustiņš Enter, ja lietotājs raksta kaut ko citu, piemēram, jā vai nē, tiks parādīts kļūdas ziņojums.

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.drukāt('Vai jums ir virs 24? ');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

Būlabl=scanObj.nextBoolean();
ja (bl== taisnība) {
Sistēma .ārā.println('Jums ir vairāk nekā 24');
}
citādi ja (bl== nepatiesa) {
Sistēma .ārā.println('Jūs esat jaunāks par 24 gadiem');
}

scanObj.aizvērt();
}
}

Tā kā java izsniegs kļūdas ziņojumu, kamēr ievadītā informācija nav patiesa vai nepatiesa, cits, ja ir izmantots, nevis cits.

Atšķirība starp metodēm print un println ir tāda, ka drukāšana sagaida ievadi pašreizējā rindā, bet println - ievadi nākamajā rindā.

nextByte () metode

Izmantojot ASCII rakstzīmju kopu, rakstzīme ir viens baits. Tomēr dažās austrumu rakstzīmju kopās rakstzīme var sastāvēt no vairākiem baitiem. Neatkarīgi no rakstzīmju kopas nextByte metode nolasa un apstiprina nākamo ievades baitu. Šim nolūkam var izmantot šādu kodu:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.drukāt('Tipa numurs<128, press Enter: ');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

baitsbt=scanObj.nextByte();
Sistēma .ārā.println(bt);

scanObj.aizvērt();
}
}

Ja šim kodam tiek ievadīts skaitlis, kas lielāks par 127, vai alfabēta rakstzīme, tiks parādīts kļūdas ziņojums.

nextInt () metode

Var apstiprināt un pieņemt arī nākamo veselu skaitļu marķieri kā ievadi. Var izmantot šādu kodu:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.drukāt('Ievadiet jebkuru veselu skaitli:');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

intuz vienu=scanObj.nākamaisInt();
Sistēma .ārā.println(uz vienu);

scanObj.aizvērt();
}
}

Iepriekšējās vai beigu vietas ir noņemtas. Šim kodam tiks pieņemta jebkura vesela skaitļa vērtība, ieskaitot vērtības, kas lielākas par 127. Izmantojot šīs nextXXX () metodes, tiklīdz validācija neizdodas, tiek izsniegts kļūdas ziņojums.

nextBigInteger () metode

Šķiet, ka programmatūras inženieri nekad nepārstās nākt klajā ar jaunām lietām. Liels vesels skaitlis ir vesels skaitlis, kura vērtība ir daudz lielāka nekā veselam skaitlim. Tomēr, izmantojot Java, to var nolasīt tāpat kā veselu skaitli. To ilustrē šāds kods:

importēt java.util.Scanner;
importēt java.math.BigInteger;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.println('Ievadiet jebkuru veselu skaitli lielam veselam skaitlim:');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

BigInteger uz vienu=scanObj.nextBigInteger();
Sistēma .ārā.println(uz vienu);

scanObj.aizvērt();
}
}

Ņemiet vērā importa paziņojumu, importējiet java.math.BigInteger ;. Ņemiet vērā arī to, ka lielais vesels skaitlis sākas ar lielajiem burtiem B, nevis mazajiem burtiem b.

nextFloat () metode

Arī nākamo pludiņa marķieri kā ievadi var apstiprināt un pieņemt. Var izmantot šādu kodu:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.drukāt('Ievadiet jebkuru pludiņu:');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

peldētuz vienu=scanObj.nextFloat();
Sistēma .ārā.println(uz vienu);

scanObj.aizvērt();
}
}

Peldošā skaitļa piemērs ir 23.456. Iepriekšējās vai beigu vietas ir noņemtas.

nextDouble ()

Arī nākamo dubulto žetonu kā ievadi var apstiprināt un pieņemt. Var izmantot šādu kodu:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.drukāt('Ievadiet jebkuru dubultā:');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

dubultāuz vienu=scanObj.nextDouble();
Sistēma .ārā.println(uz vienu);

scanObj.aizvērt();
}
}

Dubultā skaitļa piemērs ir 23.456. Divkāršs skaitlis atšķiras no pludiņa, jo tam ir mazāka kļūda. Iepriekšējās vai beigu vietas ir noņemtas.

nextLine () metode

NextLine () metode ir virknei. Ja virkne ir tastatūras ievades līnija pēc Enter nospiešanas, tai var būt jaunrindas rakstzīme “ n”. Var izmantot šādu kodu:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Sistēma .ārā.println('Ievadiet rindiņu ar\n: ');
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

Stīga lpp=scanObj.nextLine();
Sistēma .ārā.println(lpp);

scanObj.aizvērt();
}
}

Ievērojiet, ka virknes veids sākas ar lielajiem S, nevis mazajiem s.

Metodes nextLine (), hasNext () un next () ir izmantotas iepriekš šajā rakstā. Skenerim ir citas metodes un citas primitīvas datu metodes - skatīt vēlāk.

Ievades piešķiršana mainīgajam

Ievadi var piešķirt mainīgajam, kā redzams šādā kodā:

importēt java.util.Scanner;

publiski klaseKlase{
publiski statisks spēkā neesošsgalvenais( Stīga []args) {
Skenera skenēšanaObj= jaunsSkeneris( Sistēma .iekšā);

Sistēma .ārā.drukāt('Ievadiet vārdu:');
Stīga vārds=scanObj.nextLine();

Sistēma .ārā.drukāt('Ievadiet vecumu:');
intvecums=scanObj.nākamaisInt();

Sistēma .ārā.drukāt('Ievadiet algu:');
dubultāalga=scanObj.nextDouble();

Sistēma .ārā.println('Vārds:' +vārds+ ', Vecums:' +vecums+ ', Alga:' +alga);

scanObj.aizvērt();
}
}

Secinājums

Java skeneris ir java.util pakotnes klase. Šīs klases mērķis ir lasīt ievadi no virknes, tastatūras, faila vai tīkla ligzdas. Šajā rakstā galvenā uzmanība ir pievērsta ievades nolasīšanai no tastatūras un rezultāta parādīšanai termināļa logā. Līdzīgas idejas var izmantot, lai lasītu ievadi no virknes, faila vai tīkla kanāla.

Lai izlasītu visu tastatūras ievades rindu, izmantojiet metodi nextLine (). Līniju kā virkni var sadalīt žetonos, izmantojot metodes hasNext () un next (), un ciklu while. Sadalīšanai noklusējuma atdalītājs ir atstarpe, bet programmētājs var izvēlēties kādu citu atdalītāju. Ja nepieciešams, neaizmirstiet izmantot taustiņu kombināciju Ctrl+z, lai apturētu cikla ciklu. Priekšējo un beigu atstarpju noņemšanu var veikt, izmantojot citas shēmas, kas nav aplūkotas šajā rakstā. Žetonu apstiprināšanu var veikt arī, izmantojot citas shēmas, kas nav aplūkotas šajā rakstā.

Primitīvās vērtības var nolasīt, izmantojot nextBoolean (), nextByte (), nextInt () utt. Šīs nextXXX () metodes apstiprina, kā arī noņem atstarpes.

Java skenerim ir daudz vairāk metožu. Tomēr šajā rakstā ir izskaidrots skenera pamata lietojums. Žetona izvēle faktiski tiek veikta, izmantojot regulārās izteiksmes metodes. Regulārās izteiksmes paņēmienu izmantošana jau kādu laiku ir diskusija.