JavaRush /Blog Jawa /Random-JV /Kelas Scanner ing Jawa

Kelas Scanner ing Jawa

Diterbitake ing grup
Hello! Pelajaran kita dina iki bakal dadi khusus! Sadurunge, nalika ngrampungake masalah lan nulis program, algoritma kasebut gampang: kita nulis sawetara kode, mbukak metode utama () , program nindakake apa sing dibutuhake, lan metu. Nanging saiki kabeh bakal owah! Dina iki kita bakal sinau carane bener-bener sesambungan karo program: kita bakal mulang kanggo nanggapi tumindak kita! Sampeyan bisa uga wis ngerti ngendi kita arep karo iki. Kita bakal nyawisake kuliah iki kanggo analisis rinci babagan salah sawijining kelas basa Jawa - Scanner. Kelas iki bakal migunani yen sampeyan kudu maca data sing diketik pangguna. Sadurunge nerusake sinau kode kasebut, ujare, apa sampeyan wis nate nemoni piranti kaya scanner? Mesthi ya. Struktur internal scanner cukup rumit, nanging inti saka karyane cukup prasaja: maca data sing dilebokake pangguna (contone, paspor utawa kabijakan asuransi) lan nyimpen informasi sing diwaca ing memori (contone , awujud gambar). Dadi, dina iki sampeyan bakal nggawe scanner dhewe! Mesthi, dheweke ora bisa nangani dokumen, nanging bisa nangani informasi teks kanthi apik :) Ayo!Kelas Scanner - 1

Kelas Scanner Jawa

Babagan pisanan lan sing paling penting sing kudu kita kenal yaiku kelas java.util.Scanner. Fungsine prasaja banget. Kaya scanner nyata, maca data saka sumber sing sampeyan nemtokake. Contone, saka baris, saka file, saka console. Banjur ngerteni informasi kasebut lan ngolah yen dibutuhake. Ayo menehi conto sing paling gampang:
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);
   }
}
Kita nggawe obyek scanner lan nemtokake sumber data kasebut (senar karo teks). Cara kasebut nextLine()ngakses sumber data (teks kita karo quatrains), nemokake baris sabanjure sing durung diwaca (ing kasus kita, pisanan) lan ngasilake. Sawisé iku kita output menyang console: Output konsol:

Люблю тебя, Peterа творенье,
Kita bisa nggunakake metode nextLine()kaping pirang-pirang lan ngasilake kabeh potongan puisi:
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);
   }
}
Saben pemindai kita bakal maju selangkah lan maca baris sabanjure. Asil saka program kasebut metu menyang konsol:

Люблю тебя, Peterа творенье,
Люблю твой строгий, стройный вид,
Невы державное теченье,
Береговой ее гранит
Kaya sing wis dingerteni, sumber data kanggo pemindai bisa uga ora mung senar, nanging uga, contone, konsol. Warta penting kanggo kita: yen sadurunge kita mung ngetokake data ing kana, saiki kita bakal ngetik data saka keyboard! Ayo ndeleng apa sing bisa ditindakake kelas Scanner :
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);

   }
}
Cara nextInt()maca lan ngasilake nomer sing diketik. Ing program kita, digunakake kanggo nemtokake nilai menyang variabel number. Iki katon luwih kaya scanner nyata! Program kasebut njaluk pangguna ngetik nomer apa wae menyang baris. Sawise pangguna wis nindakake iki, program matur nuwun, nampilake asil karya ing console lan ends. Nanging kita isih duwe masalah serius. Pangguna bisa uga salah lan salah ngetik. Mangkene conto nalika program saiki bakal mandheg:
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);

   }
}
Coba ketik string "JavaRush" tinimbang nomer: Output konsol:
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
Waduh, kabeh ala -_- Kanggo ngindhari kahanan kaya ngono, kita kudu nggawe cara kanggo ngevalidasi data sing dilebokake pangguna. Contone, pangguna ngetik apa-apa liyane saka nomer, iku bakal becik kanggo nampilake bebaya ing console sing informasi ngetik ora nomer, lan yen kabeh iku supaya, nampilake teks konfirmasi. Nanging kanggo nindakake iki, kita kudu "ndeleng masa depan" - ngerteni apa sing bakal ana ing aliran kita. Apa Scanner ing Jawa bisa nindakake iki? Kok bisa! Lan iki nduweni klompok kabeh cara: hasNextInt()- cara mriksa manawa bagean sabanjure data sing dilebokake yaiku nomer utawa ora (bali bener utawa salah). hasNextLine()- mriksa apa data sabanjure minangka senar. hasNextByte(), hasNextShort(), hasNextLong(), hasNextFloat(), hasNextDouble()- kabeh cara iki nindakake padha kanggo jinis data liyane. Ayo nyoba ngganti program kanggo maca angka:
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!");
       }

   }
}
Saiki program kita mriksa apa karakter sabanjure diketik iku nomer utawa ora. Lan mung yen ana, nampilake konfirmasi. Yen input ora lulus tes, program bakal weruh iki lan njaluk sampeyan nyoba maneh. Ateges, sampeyan bisa komunikasi karo obyek Scanner lan ngerti luwih dhisik apa jinis data sing dikarepake. “He, scanner, terus apa? Nomer, string, utawa liyane? Nomer? Lan sing endi - int,, short? long" Fleksibilitas iki menehi sampeyan kesempatan kanggo mbangun logika program sampeyan gumantung saka prilaku pangguna. Cara penting liyane sing kudu digatekake yaiku useDelimiter(). Cara iki liwati string sing pengin digunakake minangka delimiter. Contone, dumadakan kita kasengsem ing puisi Jepang lan mutusake nggunakake scanner kanggo maca sawetara haiku pujangga gedhe Matsuo Basho. Sanajan telung ayat sing beda-beda diwenehake ing siji baris sing kikuk, kita bisa kanthi gampang misahake lan ngowahi format kasebut kanthi becik:
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();
   }
}
Kita nggunakake metode useDelimeter () saka kelas Scanner minangka pemisah baris : tanggung jawab kanggo dibagi data mlebu menyang bagean. Ing kasus kita, kutipan siji ( "'" ) diterusake minangka argumen lan digunakake kanggo misahake string . Teks ing ngisor kutipan iki katon ing baris anyar amarga ing loop while kita nggunakake metode println () saka kelas Sistem kanggo maca data. Akibaté, kita bakal duwe output apik ing console, kaya ing buku:
На голой ветке
Ворон сидит одиноко.
Осенний вечер.

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

*** 
 
Как разлилась река!
Цапля бредет на коротких ножках,
По колено в воде.
Ing conto sing padha, ana siji cara liyane sing sampeyan kudu mbayar manungsa waé - close(). Kaya obyek apa wae sing bisa digunakake karo stream I/O, pemindai kudu ditutup nalika ngrampungake karyane supaya ora nganggo sumber daya komputer maneh. Aja lali cara 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!

   }
}
Iku kabeh! Kaya sing sampeyan ngerteni, kelas Scanner cukup gampang digunakake lan migunani banget! :)
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION