JavaRush /Java Blog /Random-TK /Java-da skaner synpy

Java-da skaner synpy

Toparda çap edildi
Salam! Bu günki sapagymyz aýratyn bolar! Ondan öň, meseleler çözülende we programmalar ýazylanda algoritm ýönekeýdi: käbir kod ýazýarys, esasy () usulyny işleýäris , programma talap edilýän zady edýär we çykýar. Emma indi hemme zat üýtgär! Bu gün programma bilen hakykatdanam nähili täsirleşmelidigini öwreneris: amallarymyza jogap bermegi öwrederis! Munuň bilen nirä barýandygymyza eýýäm düşünip bilersiňiz. Bu leksiýany Java dili sapaklarynyň biri bolan Skaneriň jikme-jik derňewine bagyşlarys. Ulanyjylaryň girizýän maglumatlaryny okamak zerur bolsa, bu synp peýdaly bolar. Kody öwrenmäge geçmezden ozal aýdyň, skaner ýaly enjamy gördüňizmi? Elbetde hawa. Skaneriň içki gurluşy gaty çylşyrymly, ýöne işiniň düýp manysy gaty ýönekeý: ulanyjynyň özüne giren maglumatlary okaýar (mysal üçin, pasport ýa-da ätiýaçlandyryş polisi) we okalýan maglumatlary ýatda saklaýar (mysal üçin) , şekil görnüşinde). Şeýlelik bilen, bu gün öz skaneriňizi döredersiňiz! Elbetde, resminamalary dolandyryp bilmeýär, ýöne tekst maglumatlaryny gaty gowy dolandyryp bilýär :) Geliň!Skaner synpy - 1

Java skaner synpy

Ilki bilen tanyşmaly iň möhüm zat synpdyr java.util.Scanner. Onuň işleýşi gaty ýönekeý. Hakyky skaner ýaly, onuň üçin görkezen çeşmeden maglumatlary okaýar. Mysal üçin, bir setirden, faýldan, konsoldan. Soň bolsa bu maglumatlary tanap, zerur bolanda gaýtadan işleýär. Iň ýönekeý mysal getireliň:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("I love you, Petra creation,\n" +
               "I love your stern, slim look,\n" +
               "Neva sovereign current,\n" +
               "Coastal granite");
       String s = scanner.nextLine();
       System.out.println(s);
   }
}
Skaner obýektini döretdik we onuň üçin maglumat çeşmesini kesgitledik (tekstli setir). Usul nextLine()maglumat çeşmesine (dörtlükli tekstimiz) girýär, entek okamadyk indiki setirini tapýar (biziň ýagdaýymyzda birinji) we yzyna gaýtaryp berýär. Ondan soň ony konsola çykarýarys: Konsol çykyşy:

Люблю тебя, Peterа творенье,
Usuly nextLine()birnäçe gezek ulanyp, goşgynyň ähli bölegini çykaryp bileris:
public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("I love you, Petra creation,\n" +
               "I love your stern, slim look,\n" +
               "Neva sovereign current,\n" +
               "Coastal granite");
       String s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
       s = scanner.nextLine();
       System.out.println(s);
   }
}
Her gezek skanerimiz bir ädim öňe gidip, indiki setiri okar. Programmanyň netijesi konsola çykýar:

Люблю тебя, Peterа творенье,
Люблю твой строгий, стройный вид,
Невы державное теченье,
Береговой ее гранит
Öň hem aýdyşymyz ýaly, skaner üçin maglumat çeşmesi diňe bir setir bolup bilmez, mysal üçin konsol hem bolup biler. Biziň üçin möhüm habar: ozal diňe şol ýerde maglumatlary çykarýan bolsak, indi klawiaturadan maglumatlary girizeris! Skaner synpynyň başga näme edip biljekdigini göreliň :
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter the number:");

       int number = sc.nextInt();

       System.out.println("Thank you! You entered a number" + number);

   }
}
Usul nextInt()girizilen belgini okaýar we yzyna berýär. Programmamyzda üýtgeýjä baha bellemek üçin ulanylýar number. Bu hakyky skaner ýaly görünýär! Programma ulanyjydan islendik belgini setire girizmegini soraýar. Ulanyjy muny edeninden soň, programma oňa sag bolsun aýdýar, konsoldaky işiniň netijesini görkezýär we gutarýar. Emma henizem bir çynlakaý mesele bar. Ulanyjy ýalňyşyp, nädogry bir zat girizip biler. Ine, häzirki programmamyzyň haçan işlemeginiň mysaly:
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter the number:");

       int number = sc.nextInt();

       System.out.println("Thank you! You entered a number" + number);

   }
}
Geliň, sanyň ýerine “JavaRush” setirini girizmäge synanyşalyň: Konsol çykyşy:
Enter the number:
JavaRush
Exception in thread "main" java.util.InputMismatchException
  at java.util.Scanner.throwFor(Scanner.java:864)
  at java.util.Scanner.next(Scanner.java:1485)
  at java.util.Scanner.nextInt(Scanner.java:2117)
  at java.util.Scanner.nextInt(Scanner.java:2076)
  at Main.main(Main.java:10)

Process finished with exit code 1
Wah, hemme zat erbet -_- Şeýle ýagdaýlardan gaça durmak üçin ulanyjynyň girýän maglumatlaryny tassyklamagyň usulyny tapmalydyrys. Mysal üçin, ulanyjy sandan başga bir zady girizýär, konsolda girizilen maglumatlaryň san däldigi barada duýduryş görkezmek gowy bolardy we hemme zat tertipli bolsa tassyklama tekstini görkeziň. Emma munuň üçin aslynda “geljege göz aýlamaly” - akymymyzda indiki zatlary tapmaly. Java-da skaner muny edip bilermi? Nädip edip biler! Munuň üçin bolsa usullaryň tutuş topary bar: hasNextInt()- usul girizilen maglumatlaryň indiki böleginiň san ýa-da ýokdugyny barlaýar (degişlilikde dogry ýa-da ýalňyş görkezýär). hasNextLine()- indiki maglumatlaryň setirdigini ýa-da ýokdugyny barlaýar. hasNextByte(),,,, - bu usullaryň hemmesi beýleki hasNextShort()maglumatlar görnüşleri üçin birmeňzeş. Sanlary okamak üçin programmamyzy üýtgetmäge synanyşalyň: hasNextLong()hasNextFloat()hasNextDouble()
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter the number:");

       if (sc.hasNextInt()) {
           int number = sc.nextInt();
           System.out.println("Thank you! You entered a number" + number);
       } else {
           System.out.println("Sorry, but this is clearly not a number. Restart the program and try again!");
       }

   }
}
Indi programmamyz girizilen indiki simwolyň san ýa-da ýokdugyny barlaýar. Diňe şeýle bolsa, tassyklamany görkezýär. Giriş synagdan geçmese, programma muny duýýar we gaýtadan synanyşmagyňyzy haýyş edýär. Aslynda, Skaner obýekti bilen habarlaşyp bilersiňiz we haýsy maglumatlara garaşmalydygyny öňünden bilip bilersiňiz. “Heý, skaner, indiki näme? San, setir ýa-da başga bir zat? San? Haýsy - ,, int? ” Bu çeýeligi, ulanyjynyň özüni alyp barşyna baglylykda programmaňyzyň logikasyny döretmäge mümkinçilik berýär. Üns bermäge mynasyp başga bir usul . Bu usul, aýyrmak hökmünde ulanmak isleýän setiriňizden geçdi. Mysal üçin, birden ýapon poeziýasy bilen gyzyklandyk we beýik şahyr Matsuo Başonyň birnäçe haikuny okamak üçin skanerden peýdalanmagy makul bildik. Bize bir dürli setirde üç dürli aýat berilse-de, olary aňsatlyk bilen bölüp we owadan formatlap bileris: shortlonguseDelimiter()
public class Main {
   public static void main(String[] args) {
       Scanner scan = new Scanner("On a Bare Branch" +
               "Raven sits alone.'" +
               "Autumn evening." +
               "''***''" +
               "There's such a moon in the sky,'" +
               "Like a tree cut down at the root:'" +
               "A fresh cut turns white." +
               "''***''" +
               "How the river has overflowed!" +
               "The heron wanders on short legs,'" +
               "Knee-deep in water.");

       scan.useDelimiter("'");

       while (scan.hasNext()) {
           System.out.println(scan.next());
       }

       scan.close();
   }
}
Skaner synpynyň useDelimeter () usulyny setir bölüji hökmünde ulanýarys : gelýän maglumatlary böleklere bölmek üçin jogapkärdir. Biziň ýagdaýymyzda ýekeje sitata ( "'" ) argument hökmünde kabul edilýär we setirleri aýyrmak üçin ulanylýar . Bu sitatadan soňky tekst täze setirde peýda bolýar, sebäbi wagtyň dowamynda maglumatlary okamak üçin Ulgam synpynyň println () usulyny ulanýarys . Netijede, edil kitaplardaky ýaly konsolda ajaýyp çykyş ederis:
На голой ветке
Ворон сидит одиноко.
Осенний вечер.

*** 
 
В небе такая луна,
Словно дерево спилено под корень:
Белеет свежий срез.

*** 
 
Как разлилась река!
Цапля бредет на коротких ножках,
По колено в воде.
Şol bir mysalda, hökman üns bermeli ýene bir usul bar - close(). I / O akymlary bilen işleýän islendik obýekt ýaly, skaner işi gutarandan soň ýapylmalydyr, şonuň üçin kompýuterimiziň çeşmelerini sarp etmez. Usuly hiç wagt ýatdan çykarmaň close()!
public class Main {

   public static void main(String[] args) {

       Scanner sc = new Scanner(System.in);
       System.out.println("Enter the number:");

       int number = sc.nextInt();

       System.out.println("Thank you! You entered a number" + number);

       sc.close();//Now we did everything right!

   }
}
Bu hemmesi! Görşüňiz ýaly, Skaner synpyny ulanmak gaty aňsat we örän peýdaly! :)
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION