[Help]getMessage trả về null dù rõ ràng là bị InputMismatchException

TruongVanHoc

New Member
8/10/15
10
0
1
29
Mình không dùng try catch, khi nhập vào từ màn hình cho biến int mà nhập dạng float hoặc ký tự alphabet thì nó hiện lỗi InputMismatchException. Nhưng khi dùng try catch, getMessage chỉ trả về null. Cái này là bị cái gì?

Code:
public class Tong2So {
    private int m;
    private int n;
    private Scanner input = new Scanner(System.in);

    private int[]nhapSo(int []so){
        for (int i = 0;i<so.length;i++){
            System.out.print("Nhap so nguyen thu "+(i+1)+":");
            so[i]=input.nextInt();
        }
        return so;
    }

    private int tinhTong(int[]so){
        return so[0]+so[1];
    }

    private void showKetQua(int[]so, float ketQua){
        System.out.println(so[0]+"+"+so[1]+"="+ketQua);
    }

    protected Tong2So(){
        System.out.println("CHUONG TRINH TINH TONG");
        int[]so = new int[2];
        boolean hopLe = false;
        do {
            try {
                so=nhapSo(so);
                float ketQua=tinhTong(so);
                showKetQua(so,ketQua);
                hopLe=true;
            }catch (InputMismatchException ex){
                System.out.println("Error: "+ex.getMessage());
                System.out.println("So nguyen nhap vao khong hop le...");
                input.next();
                System.out.println();
            }
        }while (hopLe==false);
    }
}
 
5/1/15
9
3
3
bởi vì, bởi vì... mình đoán hàm throw exception của chương trình này là next(Pattern) trong Scanner class. tại sao lại thế? và xảy ra như thế nào, bạn có thể đặt debug để biết thêm nhé. điều đó tốt hơn cho bạn đấy.