Cara menggunakan Scanner di Java

How Use Scanner Java



Pengimbas di Java adalah kelas dalam pakej java.util. Kelas ini bertujuan untuk membaca input dari rentetan, papan kekunci, fail, atau soket rangkaian. Artikel ini hanya tertumpu pada membaca input dari papan kekunci dan memaparkan hasilnya di tetingkap terminal. Idea serupa dapat digunakan untuk membaca input dari fail atau saluran rangkaian. Pengimbas tidak mencetak ke tetingkap terminal. Untuk mencetak ke terminal, gunakan objek System.out. Mudah menggunakan objek ini untuk mencetak ke terminal, seperti yang digambarkan di bawah.

Untuk menggunakan kelas Scanner, ia mesti diimport terlebih dahulu. Selepas itu, objek mesti dibuat daripadanya. Setelah menggunakan objek Pengimbas, ia mesti ditutup. Objek aliran input yang mewakili papan kekunci adalah System.in. Pengimbas mempunyai banyak kaedah. Hanya yang biasa digunakan akan dijelaskan dalam artikel ini.







Kandungan Artikel



Penggunaan Kelas Pengimbas dengan mudah

Kod berikut meminta pengguna untuk memasukkan ayat, dan kemudian memaparkan kalimat:



mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);
Sistem .keluar.println('Taipkan ayat dan tekan Enter:');

Tali ayat=imbasanObj.talian seterusnya();
Sistem .keluar.println(ayat);

imbasanObj.tutup();
}
}

Baris pertama mengimport kelas Pengimbas. Dalam fungsi utama, baris pertama membuat objek pengimbas menggunakan objek System.in untuk papan kekunci. Sebaik sahaja objek pengimbas dibuat, ia mula menunggu input. Baris seterusnya mencetak pernyataan, meminta pengguna untuk memasukkan ayat. Garis berikut dalam kod menggunakan kaedah nextLine () objek pengimbas untuk membaca ayat pengguna setelah dia menekan Enter. Garis selepas, dalam kod, mencetak semula kalimat di tetingkap terminal. Baris terakhir menutup objek pengimbas.





Meludahkan Garis Input menjadi Nilai

Kod berikut membahagikan baris input menjadi kata-kata (token), menggunakan ruang sebagai pembatas:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);
Sistem .keluar.println('Ketik barisan token, dan tekan Enter:');

sementara(imbasanObj.mempunyaiBerikutnya()){
Sistem .keluar.println(imbasanObj.seterusnya());
}

imbasanObj.tutup();
}
}

hasNext () dan next () adalah dua kaedah lain untuk objek pengimbas. Apabila objek pengimbas membaca garis, ia menyimpannya. next () mengakses token seterusnya (perkataan). hasNext () kembali benar jika ada token lain yang belum diakses.



Malangnya, pengguna masih diharapkan memasukkan input untuk membelah dan memaparkan semula dengan kod ini. Untuk mengakhiri semua itu, tekan Ctrl + z, dan anda harus kembali pada command prompt.

Dalam kod di atas, pembatas memisahkan token di ruang. Watak lain boleh digunakan. Kod berikut menggunakan koma. Jangan lupa tekan Ctrl + z untuk mengakhiri gelung jika anda menguji kodnya.

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);
Sistem .keluar.println('Ketik barisan token, dan tekan Enter:');

imbasanObj.gunakanDelimiter(',');

sementara(imbasanObj.mempunyaiBerikutnya()){
Sistem .keluar.println(imbasanObj.seterusnya());
}

imbasanObj.tutup();
}
}

Sekiranya anda menguji kodnya, anda akan menyedari bahawa ruang dalam token telah dimasukkan sebagai sebahagian daripada token (output). Ungkapan, scanObj.useDelimiter (,); ditaip setelah baris input dibaca; inilah yang menjadikan koma, pembatas.

Membaca dan Mengesahkan Jenis Data Primitif

kaedah nextBoolean ()

Dalam kod berikut, pengguna diharapkan dapat mengetik sama ada benar atau salah tanpa tanda petik dan kemudian tekan kekunci Enter jika pengguna menaip perkara lain, seperti ya atau tidak, mesej ralat akan dipaparkan.

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.mencetak('Adakah anda berumur 24 tahun ke atas? ');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

booleanbl=imbasanObj.seterusnyaBoolean();
sekiranya (bl== benar) {
Sistem .keluar.println('Anda berumur lebih dari 24 tahun');
}
yang lain sekiranya (bl== salah) {
Sistem .keluar.println('Anda berumur di bawah 24 tahun');
}

imbasanObj.tutup();
}
}

Oleh kerana java akan mengeluarkan mesej ralat selagi inputnya tidak benar atau salah, yang lain jika telah digunakan dan bukannya yang lain.

Perbezaan antara kaedah, cetak dan println, adalah bahawa cetak mengharapkan input pada baris sekarang, sementara println mengharapkan input pada baris berikutnya.

kaedah nextByte ()

Dengan set watak ASCII, watak adalah satu bait. Walau bagaimanapun, dengan beberapa kumpulan watak Timur, watak mungkin terdiri daripada lebih daripada satu bait. Tidak bergantung pada set watak, kaedah nextByte membaca dan mengesahkan bait input seterusnya. Kod berikut boleh digunakan untuk tujuan ini:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.mencetak('Taipkan nombor<128, press Enter: ');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

baitbt=imbasanObj.seterusnyaBait();
Sistem .keluar.println(bt);

imbasanObj.tutup();
}
}

Sekiranya nombor yang lebih besar daripada 127 atau aksara abjad dimasukkan untuk kod ini, mesej ralat akan dikeluarkan.

Kaedah nextInt ()

Token bilangan bulat seterusnya sebagai input juga dapat disahkan dan diterima. Kod berikut boleh digunakan:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.mencetak('Masukkan sebarang Integer:');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

intpada satu=imbasanObj.seterusnyaInt();
Sistem .keluar.println(pada satu);

imbasanObj.tutup();
}
}

Ruang utama atau ketinggalan telah dikeluarkan. Untuk kod ini, sebarang nilai bulat, termasuk nilai lebih besar dari 127, akan diterima. Dengan kaedah nextXXX () ini, setelah pengesahan gagal, mesej ralat dikeluarkan.

Kaedah nextBigInteger ()

Nampaknya jurutera perisian tidak akan berhenti tampil dengan perkara baru. Bilangan bulat besar adalah bilangan bulat yang nilainya jauh lebih besar daripada bilangan bulat. Namun, dengan Java, ia dapat dibaca dengan cara yang sama seperti bilangan bulat. Kod berikut menggambarkan ini:

mengimport java.util.Scanner;
mengimport java.math.BigInteger;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.println('Masukkan sebarang Integer untuk Big Integer:');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

BigInteger pada satu=imbasanObj.seterusnyaBigInteger();
Sistem .keluar.println(pada satu);

imbasanObj.tutup();
}
}

Perhatikan penyataan import, import java.math.BigInteger ;. Juga, perhatikan bahawa jenis bilangan bulat besar dimulai dengan huruf besar B dan bukan huruf kecil b.

Kaedah nextFloat ()

Token float seterusnya sebagai input juga dapat disahkan dan diterima. Kod berikut boleh digunakan:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.mencetak('Masukkan sebarang Float:');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

terapungpada satu=imbasanObj.seterusnyaFloat();
Sistem .keluar.println(pada satu);

imbasanObj.tutup();
}
}

Contoh nombor apungan ialah 23.456. Ruang utama atau ketinggalan telah dikeluarkan.

seterusnyaDouble ()

Token berganda seterusnya sebagai input juga dapat disahkan dan diterima. Kod berikut boleh digunakan:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.mencetak('Masukkan sebarang Double:');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

bergandapada satu=imbasanObj.seterusnyaDua();
Sistem .keluar.println(pada satu);

imbasanObj.tutup();
}
}

Contoh nombor ganda ialah 23.456. Nombor berganda berbeza dengan apungan kerana mempunyai margin kesalahan yang kurang. Ruang utama atau ketinggalan telah dikeluarkan.

kaedah nextLine ()

Kaedah nextLine () adalah untuk rentetan. Sekiranya rentetan adalah baris input dari papan kekunci setelah menekan Enter, ia dapat memiliki karakter baris baru, ' n'. Kod berikut boleh digunakan:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Sistem .keluar.println('Masukkan garis yang mempunyai\n: ');
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

Tali hlm=imbasanObj.talian seterusnya();
Sistem .keluar.println(hlm);

imbasanObj.tutup();
}
}

Perhatikan bahawa jenis rentetan dimulai dengan huruf besar S dan bukan huruf kecil s.

Kaedah nextLine (), hasNext () dan next () telah digunakan sebelumnya, dalam artikel ini. Pengimbas mempunyai kaedah lain dan kaedah data primitif lain - lihat kemudian.

Menetapkan Input kepada Pembolehubah

Input dapat diberikan kepada pemboleh ubah, seperti yang ditunjukkan oleh kod berikut:

mengimport java.util.Scanner;

awam kelasKelas{
awam statik batalutama( Tali []berhujah) {
Imbasan pengimbasObj= baruPengimbas( Sistem .dalam);

Sistem .keluar.mencetak('Masukkan Nama:');
Tali nama=imbasanObj.talian seterusnya();

Sistem .keluar.mencetak('Masukkan Umur:');
intumur=imbasanObj.seterusnyaInt();

Sistem .keluar.mencetak('Masukkan Gaji:');
bergandagaji=imbasanObj.seterusnyaDua();

Sistem .keluar.println('Nama:' +nama+ ', Umur:' +umur+ ', Gaji:' +gaji);

imbasanObj.tutup();
}
}

Kesimpulannya

Pengimbas di Java adalah kelas dalam pakej java.util. Kelas ini bertujuan untuk membaca input dari rentetan, papan kekunci, fail, atau soket rangkaian. Artikel ini memberi tumpuan terutamanya pada membaca input dari papan kekunci dan memaparkan hasilnya di tetingkap terminal. Idea serupa dapat digunakan untuk membaca input dari rentetan, fail, atau saluran rangkaian.

Untuk membaca keseluruhan baris input papan kekunci, gunakan kaedah nextLine (). Garis sebagai rentetan dapat dibagi menjadi token, menggunakan kaedah hasNext () dan next (), dan loop sementara. Pembatas lalai untuk membelah adalah ruang, tetapi pengaturcara dapat memilih beberapa pembatas lain. Jangan lupa lakukan Ctrl + z untuk menghentikan gelung sementara, jika perlu. Menghapus ruang depan dan belakang boleh dilakukan dengan menggunakan skema lain yang tidak dibahas dalam artikel ini. Pengesahan token juga dapat dilakukan dengan menggunakan skema lain yang tidak dibahas dalam artikel ini.

Nilai primitif boleh dibaca menggunakan nextBoolean (), nextByte (), nextInt (), dll. Kaedah nextXXX () ini melakukan pengesahan, dan juga membuang ruang utama dan ketinggalan.

Java Scanner mempunyai banyak kaedah lagi. Walau bagaimanapun, penggunaan asas Pengimbas telah dijelaskan dalam artikel ini. Pemilihan token sebenarnya dilakukan dengan menggunakan teknik ungkapan biasa. Penggunaan teknik ungkapan biasa adalah perbincangan, untuk beberapa waktu yang lain.