Mengesahkan input pengguna
Kendalikan input tidak sah dengan baik
Mengesahkan input pengguna ialah pelajaran Java Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Java Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Jangan Percayai Masukan
Pengguna memasukkan perkara yang salah: huruf apabila nombor diperlukan, ruang kosong atau nilai di luar julat. Program yang teguh mengesahkan masukan dan meminta pengguna mencuba lagi tanpa terhenti secara tidak dijangka.
Pelajaran ini menunjukkan corak pengesahan yang mengendalikan keadaan dengan baik menggunakan Scanner.
Semak Sebelum Membaca
Perlindungan paling mudah ialah hasNextInt(). Baca integer hanya apabila integer itu benar-benar tersedia.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42");
if (scanner.hasNextInt()) {
System.out.println("Got: " + scanner.nextInt());
} else {
System.out.println("Please enter a number");
}
scanner.close();
}
}Mengulang Sehingga Sah
Gelung percubaan semula terus meminta masukan sehingga integer yang sah diterima. Apabila tandanya salah, buang tanda itu dengan next() dan teruskan.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc xyz 50");
int value = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
value = scanner.nextInt();
break;
}
scanner.next();
}
System.out.println("Accepted: " + value);
scanner.close();
}
}Menyemak Julat
Selain jenis, nilai selalunya mesti berada dalam julat tertentu. Baca nombor itu, kemudian sahkannya sebelum menerimanya.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("7");
int n = scanner.nextInt();
if (n >= 1 && n <= 10) {
System.out.println("Valid: " + n);
} else {
System.out.println("Out of range");
}
scanner.close();
}
}Try-Catch Semasa Menghuraikan
Pilihan lain ialah membaca seluruh baris kemudian menghuraikannya, sambil menangkap NumberFormatException untuk teks yang tidak sah. Cara ini menjadikan penimbal lebih mudah.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("notanumber");
String line = scanner.nextLine();
try {
int n = Integer.parseInt(line.trim());
System.out.println("Parsed: " + n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + line);
}
scanner.close();
}
}Mengesahkan Teks Tidak Kosong
Bagi masukan teks, tolak teks kosong. isBlank() mengembalikan true untuk rentetan yang kosong atau hanya mengandungi ruang kosong.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(" ");
String name = scanner.nextLine();
if (name.isBlank()) {
System.out.println("Name cannot be empty");
} else {
System.out.println("Hello, " + name);
}
scanner.close();
}
}Mengesahkan Pilihan
Bagi pilihan menu, pastikan nilai itu merupakan salah satu pilihan yang dibenarkan sebelum menggunakannya.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("y");
String choice = scanner.next().toLowerCase();
if (choice.equals("y") || choice.equals("n")) {
System.out.println("You chose: " + choice);
} else {
System.out.println("Please enter y or n");
}
scanner.close();
}
}Kaedah Pengesah yang Boleh Digunakan Semula
Asingkan pengesahan ke dalam kaedah supaya logiknya boleh digunakan semula. Di sini, satu kaedah menyemak sama ada umur berada dalam julat yang munasabah.
public class Main {
static boolean isValidAge(int age) {
return age >= 0 && age <= 120;
}
public static void main(String[] args) {
System.out.println(isValidAge(30));
System.out.println(isValidAge(-5));
}
}Menggabungkan Jenis dan Julat
Pengesahan sebenar selalunya menggabungkan semakan jenis, semakan julat dan gelung percubaan semula ke dalam satu rutin yang teguh.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc 200 45");
int valid = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n >= 1 && n <= 100) {
valid = n;
break;
}
} else {
scanner.next();
}
}
System.out.println("Final: " + valid);
scanner.close();
}
}Mesej Ralat yang Jelas
Pengesahan yang baik juga memberikan maklum balas yang membantu pengguna. Beritahu mereka dengan tepat perkara yang salah dan perkara yang dijangka, bukannya kegagalan umum.
public class Main {
static String validate(String input) {
if (input.isBlank()) return "Input is empty";
if (!input.matches("\\d+")) return "Only digits allowed";
return "OK";
}
public static void main(String[] args) {
System.out.println(validate(""));
System.out.println(validate("12a"));
System.out.println(validate("123"));
}
}Strategi Pengesahan
Semak jenis dengan keluarga hasNext atau try-catch, semak julat dan kekosongan, ulang sehingga sah, dan sentiasa terangkan ralat dengan jelas.
Semakan Pantas
Uji pengetahuan anda tentang pengesahan masukan.
Imbas Kembali
Anda telah mempelajari cara mengesahkan masukan dengan baik:
- Lindungi pembacaan dengan
hasNextIntatau huraikan masukan dalam try-catch - Gunakan gelung percubaan semula dan buang tanda yang salah dengan
next() - Semak julat dan tolak teks kosong dengan
isBlank - Asingkan kaedah pengesah yang boleh digunakan semula
- Berikan mesej ralat yang jelas dan khusus
Pelajari Java dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 104
- Pelajaran
- 374
Soalan Lazim
Adakah pelajaran “Mengesahkan input pengguna” percuma?
Ya — teks penuh “Mengesahkan input pengguna” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Java Academy, tingkat taraf kepada CoddyKit PRO. Kursus Java Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Mengesahkan input pengguna”?
Kendalikan input tidak sah dengan baik Anda berlatih Java Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Java Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Java Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Mengesahkan input pengguna” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Membaca input dengan Scanner
- Membaca nombor dan baris
- Mengesahkan input pengguna
- Alternatif BufferedReader