Java Academy · Pelajaran

Mengesahkan input pengguna

Kendalikan input tidak sah dengan baik

Pelajaran 3 daripada 413 langkah

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 hasNextInt atau 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
Percuma untuk bermula

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

  1. Membaca input dengan Scanner
  2. Membaca nombor dan baris
  3. Mengesahkan input pengguna
  4. Alternatif BufferedReader
← Kembali ke Java Academy