Tôi có đoạn mã sau để phân tích một biến String gọi là str.Hành vi lạ của NumberFormat Java
NumberFormat formatter = NumberFormat.getInstance();
Number number = formatter.parse(str);
Tôi muốn bắt ngoại lệ được ném khi str không phải là số để xác thực. Vấn đề tôi có là nó không phải lúc nào cũng ném ParseException mong đợi. Khi chuỗi str bắt đầu bằng một số nhưng sau đó là các ký tự có vẻ như để có được một ký tự đầu tiên của chuỗi và phân tích cú pháp chúng dưới dạng một số.
Ví dụ:
- nếu str = "a10", sau đó được ném một ParseException
- nếu str = "10a" thì không có ngoại lệ ném và số = 10
tôi không thể sử dụng Double.parseDouble (str) vì str có thể có dấu phẩy và các điểm như 1.000,98 và định dạng này không được hiểu theo phương pháp này.
Tại sao điều này lại xảy ra? Tôi có thể xác nhận nó theo bất kỳ cách nào khác không? Cảm ơn
tôi không có nghĩa là hành vi của NumberFormat là sai, nhưng tôi đã hiểu lầm API. Tôi nghĩ rằng vị trí là để chỉ ra cho đến khi nhân vật mà tôi muốn phân tích cú pháp String. Bây giờ tôi hiểu tại sao nó được thiết kế theo cách này. Cảm ơn tất cả các anwers của bạn. – Javi