30/09/2018, 18:43

Cho mình hỏi một chút về try-catch trong java


M.n cho mình hỏi là làm thế nào ở những trường hợp như nhập sai ở _mscongto thì chương trình cho phép nhập _mscongto luôn chứ không phải nhập lại toàn bộ?

... viết 20:49 ngày 30/09/2018

Đặt mỗi phần nhập thông tin ra thành 1 hàm con rồi cũng làm try catch y như hàm NhapTT.

Chẵn viết 20:57 ngày 30/09/2018

Mình nghĩ đến cách đó rồi nhưng mà có cách nào tối ưu hơn không bạn?
tại mình thấy viết tách nó ra các phương thức nhập riêng thì dài quá

Nguyễn Hữu Quyền viết 20:53 ngày 30/09/2018

Bạn làm như mình nhé ,

    import java.util.Scanner;

/**
 *
 * @author Nguyen Huu Quyen
 */
public class NumberValidation {

    public static int getInt(Scanner sc, String prompt) {
        int number = 0;
        boolean isValid = false;
        while (isValid == false) {
            System.out.print(prompt);
            if (sc.hasNextInt()) {
                number = sc.nextInt();
                isValid = true;
            } else {
                System.out.println("Lỗi, Vui lòng nhập một số nguyên ");
            }
            sc.nextLine();
        }

        return number;
    }

    public static double getDouble(Scanner sc, String prompt) {
        double number = 0;
        boolean isValid = false;
        while (isValid == false) {
            System.out.print(prompt);
            if (sc.hasNextDouble()) {
                number = sc.nextDouble();
                isValid = true;
            } else {
                System.out.println("Lỗi, Vui lòng nhập một số thực");
            }
            sc.nextLine();
        }

        return number;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = NumberValidation.getInt(sc, "Nhập Vào Một Số Nguyên :");
    }

}

Bạn thấy đấy như vậy với cách viết trên bạn có thể dùng nó ở mọi nơi một cách gọn gàng nhất, ứng với mỗi trường hợp khác nhau , bạn chỉ cần truyền một câu hướng dẫn nhập khác thôi , ví dụ của bạn là "Nhập vào số công tơ " chẳng hạng . Bạn có thể lưu class NumberValidation này vào Project của bạn và dùng nó khi cần bằng cách gọi NumberValidation.getYYY(sc , “Câu gợi ý”);

Ở chỗ YYY bạn có thể dựa theo ý tưởng trên viết thêm các phương thức khác như getDate ,getDoubleWithinRange, V.v

Chúc bạn thành công ^^~

Hữu Quyền.

Chẵn viết 20:58 ngày 30/09/2018

Dạ. Cảm ơn, mình sẽ nghiên cứu nó

Bảo Ngọc viết 20:54 ngày 30/09/2018

theo em thì dùng try-catch trong do-while thì cũng gần như cách anh nghuuquyen cũng không ngắn hay dài hơn nhau là mấy

Bài liên quan
0