Semasa memprogram di Java atau bahasa lain, kemungkinan besar anda perlu menggunakan maklumat input dari pengguna. Java menyediakan banyak kaedah yang berbeza untuk mendapatkan maklumat pengguna, tetapi kaedah yang paling biasa dan mungkin paling mudah dilaksanakan adalah dengan menggunakan objek Pengimbas.
Langkah-langkah
Kaedah 1 dari 2: Video
Langkah 1. Import kelas Pengimbas
Anda boleh memilih untuk mengimport
java.util. Scanner
kelas atau keseluruhannya
java.util
pakej. Untuk mengimport kelas atau pakej, tambahkan salah satu baris berikut di awal kod anda:
import java.util. Scanner; // Ini hanya akan mengimport kelas Pengimbas. import java.util. *; // Ini akan mengimport keseluruhan pakej java.util.
Langkah 2. Memulakan objek Pengimbas baru dengan melewati
Sistem.in
aliran input ke pembina.
Sistem.in
adalah aliran input standard yang sudah terbuka dan siap membekalkan data input. Biasanya aliran ini sesuai dengan input papan kekunci.
Pengguna pengimbasInputScanner = Pengimbas baru (System.in);
Langkah 3. Baca pelbagai jenis data input yang dimasukkan pengguna
Kelas Pengimbas menyokong mendapatkan primitif seperti int, bait, pendek, panjang selain mendapat rentetan.
-
Berikut adalah beberapa kaedah yang tersedia melalui kelas Pengimbas:
-
Baca bait -
byte seterusnya ()
-
Baca pendek -
pendekPendekaran ()
-
Baca int -
seterusnyaInt ()
-
Baca lama -
seterusnyaLong ()
-
Baca pelampung -
nextFloat ()
-
Baca dua kali ganda -
seterusnyaDouble ()
-
Baca boolean -
nextBoolean ()
-
Baca petikan lengkap -
talian seterusnya ()
-
Baca sepatah kata -
seterusnya ()
-
-
Berikut adalah contoh program yang menggunakan kaedah berbeza dari kelas Pengimbas untuk mendapatkan pelbagai jenis input:
import java.util. Scanner; Pengimbas kelas awamContoh {public static void main (String args) {// Memulakan pengguna Scanner Scanner baruInputScanner = Pengimbas baru (System.in); // Menguji nextLine (); System.out.println ("\ nApa nama anda?"); String name = userInputScanner.nextLine (); // Menguji nextInt (); System.out.print ("Berapa banyak kucing yang anda ada?"); int numberOfCats = userInputScanner.nextInt (); // Menguji nextDouble (); System.out.print ("Berapa banyak wang yang ada di dompet anda? $"); wang bergandaInWallet = userInputScanner.nextDouble (); System.out.println ("\ nHalo" + name + "! Anda mempunyai" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "dan $" + moneyInWallet + "di dompet anda. / N"); }}
Kaedah 2 dari 2: Mengendalikan Pengecualian
Langkah 1. Mengendalikan pengecualian input
Seorang
InputMismatchException
dilemparkan semasa pengguna memasukkan data yang tidak sesuai dengan jenis yang diminta. Sebagai contoh, jika pengguna memasuki String ketika int diminta, program akan membuang
InputMismatchException
dan keluar. Terdapat beberapa cara untuk menangani pengecualian ini dan menyelesaikan masalah ini agar program anda dapat dibuat dengan mudah.
Langkah 2. Gunakan blok cubaan untuk menangani
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; Pengimbas kelas awamContoh {public static void main (String args) {// Memulakan pengguna Scanner Scanner baruInputScanner = Pengimbas baru (System.in); // Menguji nextLine (); System.out.print ("\ nApa nama anda?"); String name = userInputScanner.nextLine (); // Menguji nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Berapa banyak kucing yang anda ada?"); cuba {numberOfCats = userInputScanner.nextInt (); validInput = benar; } tangkapan (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Menguji nextDouble (); validInput = salah; wang bergandaInWallet = 0.0; while (! validInput) {System.out.print ("Berapa banyak wang yang ada di dompet anda? $"); cuba {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = benar; } tangkapan (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nHalo" + name + "! Anda mempunyai" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "dan $" + moneyInWallet + "di dompet anda. / n "); }}
Perhatikan bahawa kita mesti mengimport
java.util. InputMismatchException
untuk menggunakan
InputMismatchException
Menambah
userInputScanner.nextLine ();
Langkah 3. Sebagai alternatif, jadikan input pengguna sangat mudah dengan hanya mengambil baris seterusnya dari Pengimbas
Dengan cara ini, kita dapat memastikan bahawa semua yang dikembalikan oleh Scanner adalah objek String dan tidak akan membuat pengecualian. Kemudian, untuk menukar rentetan menjadi integer atau ganda, kita boleh menggunakan kelas pembungkus Integer dan Double.
import java.util. Scanner; Pengimbas kelas awamContoh {public static void main (String args) {// Memulakan pengguna Scanner Scanner baruInputScanner = Pengimbas baru (System.in); // Menguji nextLine (); System.out.print ("\ nApa nama anda?"); String name = userInputScanner.nextLine (); // Menguji nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Berapa banyak kucing yang anda ada?"); String input = userInputScanner.nextLine (); cuba {numberOfCats = Integer.parseInt (input); validInput = benar; } tangkapan (NumberFormatException e) {validInput = false; }} // Menguji nextDouble (); validInput = salah; wang bergandaInWallet = 0.0; while (! validInput) {System.out.print ("Berapa banyak wang yang ada di dompet anda? $"); String input = userInputScanner.nextLine (); cuba {moneyInWallet = Double.parseDouble (input); validInput = benar; } tangkapan (NumberFormatException e) {validInput = false; }} System.out.println ("\ nHalo" + name + "! Anda mempunyai" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "dan $" + moneyInWallet + "di dompet anda. / n "); }}
Perhatikan bahawa di sini kita tidak perlu mengimport
NumberFormatException
Kami juga tidak perlu membersihkan penyangga menggunakan
userInputScanner.nextLine ();
Petua
- Lihat API Pengimbas untuk maklumat lebih lanjut mengenai penggunaan kelas Pengimbas.
- Sentiasa gunakan.next () dan bukan.nextLine () untuk membaca perkataan seterusnya, kerana.nextLine () boleh menjadi kereta.