CodeGym /Blog Jawa /Acak /Kelas Scanner Jawa
John Squirrels
tingkat
San Francisco

Kelas Scanner Jawa

Diterbitake ing grup
Hi! Pawulangan kita dina iki bakal khusus! Ing wulangan dina iki, kita bakal ngomong babagan Kelas Scanner Java. Sadurunge, proses ngrampungake tugas lan nulis program prasaja: kita nulis sawetara kode, mbukak utama ()cara, program nindakake apa sing dibutuhake, lan kita wis rampung. Nanging saiki kabeh bakal owah! Dina iki kita bakal sinau carane bener sesambungan karo program: kita bakal mulang carane nanggapi tumindak kita! Sadurunge miwiti nganalisa kode kasebut, apa sampeyan kudu ngatasi piranti kaya scanner? Mbokmenawa. Ing njero scanner cukup rumit, nanging ide dhasar babagan cara kerjane gampang banget: maca data sing diwenehake pangguna (kayata paspor utawa kabijakan asuransi) lan nyimpen informasi kasebut ing memori (contone, minangka gambar. ). Dina iki sampeyan bakal nggawe scanner dhewe! Mesthi, ora bakal bisa nangani dokumen kertas, nanging teks ora bakal dadi masalah :) Ayo!

Kelas Scanner Jawa

Kelas Scanner - 1Kaping pisanan, kita kudu kenal karo kelas java.util.Scanner . Fungsine prasaja banget. Kaya scanner nyata, maca data saka sumber sing sampeyan nemtokake. Contone, senar, file, console. Sabanjure, ngerteni informasi kasebut lan ngolah kanthi tepat. Punika conto paling prasaja:

public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       String s = scanner.nextLine();
       System.out.println(s);
   }
}
Kita wis nggawe obyek scanner, lan nemtokake sumber data (senar teks). Cara nextLine () ngakses sumber data (teks kita karo quatrain), nemokake baris sabanjuré durung diwaca (kang baris pisanan ing kasus iki), lan bali. Banjur kita nampilake ing console: Output konsol:

It matters not how strait the gate,
Kita bisa nggunakake cara nextLine () kaping pirang-pirang lan nampilake kabeh kutipan geguritan:

public class Main {

   public static void main(String[] args) {

       Scanner scanner = new Scanner("It matters not how strait the gate,\n" +
               "How charged with punishments the scroll,\n" +
               "I am the master of my fate,\n" +
               "I am the captain of my soul");
       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 wektu, pemindai kita maju selangkah lan maca baris sabanjure. Output program ditampilake:

It matters not how strait the gate, 
How charged with punishments the scroll, 
I am the master of my fate, 
I am the captain of my soul
Kaya sing wis dakkandhakake, sumber data scanner ora kudu dadi senar. Contone, bisa uga console. Sawetara warta sing nyenengake kanggo sampeyan: sadurunge, kita mung nampilake data ing kana, nanging saiki kita bakal maca data saka keyboard! Ayo ndeleng apa maneh kelas Scanner :

public class Main {

   public static void main(String[] args) {

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

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
Cara nextInt () maca lan ngasilake nomer sing diketik. Ing program kita, kita nggunakake kanggo nemtokake nilai kanggo nomer variabel . Iku wis luwih kaya scanner nyata! Program kasebut njaluk pangguna ngetik nomer apa wae. Sawise pangguna nindakake iki, program matur nuwun marang pangguna, nampilake asil, lan rampung. Nanging kita isih duwe masalah serius. Pangguna bisa uga salah lan salah ngetik. Iki minangka conto ing ngendi program kita saiki mandheg:

public class Main {

   public static void main(String[] args) {

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

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);

   }
}
Coba ketik string "CodeGym" tinimbang nomer: Output konsol:

Enter a number: 
CodeGym 
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
Uh, oh. We're in big trouble -_- Kanggo ngindhari kahanan kaya mengkono, kita kudu nggawe cara kanggo verifikasi data sing dilebokake pangguna. Contone, yen pangguna ngetik apa-apa liyane saka nomer, iku bakal apik kanggo nampilake bebaya sing informasi ngetik dudu nomer. Lan yen informasi oke, banjur kita bisa konfirmasi. Nanging iki mbutuhake kita "ndeleng masa depan" kanggo ndeleng apa sing bakal teka ing aliran kita. Apa Scanner bisa nindakake iki? Lan carane! Lan wis matèni saka cara kanggo nindakake iki: hasNextInt () - Cara iki mriksa apa cuwilan sabanjuré data input nomer (ngasilake bener utawa salah, minangka cocok). hasNextLine () - Cara iki mriksa apa cuwilan sabanjuré input punika senar. hasNextByte() ,hasNextShort () , hasNextLong () , hasNextFloat () , hasNextDouble () - Kabeh cara iki nindakake mriksa padha kanggo jinis data isih. Coba ganti program maca angka:

public class Main {

   public static void main(String[] args) {

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

       if (sc.hasNextInt()) {
           int number = sc.nextInt();
           System.out.println("Thanks! You entered the 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 sing dilebokake yaiku nomer. Lan nampilake konfirmasi mung yen ana. Yen input ora lulus mriksa, program njupuk cathetan lan nyuwun pangguna kanggo nyoba maneh. Sejatine, sampeyan bisa komunikasi karo obyek Scanner lan ngerteni luwih dhisik jinis data apa sing nunggu sampeyan. Nomer, string, utawa liyane? Nomer? Lan jenis apa? Int , short , long ?" Fleksibilitas iki menehi sampeyan kesempatan kanggo mbangun logika program sing gumantung ing prilaku pangguna. Kita kudu nyathet cara penting liyane: useDelimiter () . Sampeyan ngirim string menyang metode iki. String ngemot karakter sing pengin digunakake minangka separator utawa delimiters. Contone, umpamane kita dumadakan dadi kasengsem ing puisi Jepang, lan mutusake nggunakake scanner kanggo maca sawetara haiku sing ditulis dening pujangga gedhe Matsuo Bashō. Sanajan telung ayat sing beda-beda diwenehake marang kita minangka senar sing aneh, kita bisa kanthi gampang misahake lan nggawe kanthi apik:

public class Main {
   public static void main(String[] args) {
       Scanner scan = new Scanner("On a withered branch'" +
               "A crow has alighted.'" +
               "Nightfall in autumn." +
               "''***''" +
               "Such a moon above,'" +
               "Like a tree cut at the root:'" +
               "he fresh cut is white." +
               "''***''" +
               "How the river floods!'" +
               "A heron wanders on short legs,'" +
               "Knee-deep in the water.");

       scan.useDelimiter("'");

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

       scan.close();
   }
}
Kita nggunakake "\ n /*/*/*" (karakter baris anyar lan telung tanda bintang) minangka delimiter kita. Akibaté, kita duwe output console sing apik, kaya ing buku:
On a withered branch 
A crow has alighted. 
Nightfall in autumn. 

*** 

Such a moon above, 
Like a tree cut at the root: 
The fresh cut is white. 

*** 

How the river floods! 
A heron wanders on short legs, 
Knee-deep in the water.
Conto iki duwe siji cara liyane sing kudu kita tuduhake: close() . Kaya obyek apa wae sing nggarap aliran I/O, pemindai kudu ditutup yen wis rampung supaya ora ngonsumsi sumber daya komputer. Aja lali metode close() !

public class Main {

   public static void main(String[] args) {

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

       int number = sc.nextInt();

       System.out.println("Thanks! You entered the number " + number);
      
       sc.close(); // Now we've done everything right!

   }
}
Mekaten! Nalika sampeyan bisa ndeleng, carane mbiyantu iku, kelas Scanner cukup gampang kanggo nggunakake! :) Kanggo nguatake apa sing sampeyan sinau, disaranake sampeyan nonton video pelajaran saka Kursus Jawa
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION