Tôi nhận được NumberFormatException
khi tôi cố gắng phân tích 265,858 bằng Integer.parseInt()
.Làm cách nào để phân tích cú pháp chuỗi số có chứa dấu phẩy thành một số nguyên trong java?
Có cách nào để phân tích cú pháp thành số nguyên không?
Tôi nhận được NumberFormatException
khi tôi cố gắng phân tích 265,858 bằng Integer.parseInt()
.Làm cách nào để phân tích cú pháp chuỗi số có chứa dấu phẩy thành một số nguyên trong java?
Có cách nào để phân tích cú pháp thành số nguyên không?
là dấu phẩy này một tách thập phân hoặc là hai con số này? Trong trường hợp đầu tiên bạn phải cung cấp Locale
-NumberFormat
lớp có sử dụng dấu phẩy để định thập phân:
NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")
Điều này dẫn đến 265.858
. Nhưng sử dụng Mỹ Locale bạn sẽ nhận được 265858
:
NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")
Đó là bởi vì ở Pháp họ đối xử với dấu phẩy để định thập phân trong khi ở Mỹ - như nhóm (nghìn) tách.
Nếu đây là hai số - String.split()
chúng và phân tách hai chuỗi riêng biệt một cách độc lập.
"phân tích cú pháp thành số nguyên" thu hẹp quá nhiều cách giải thích :) –
Tùy chọn thứ ba: đó là dấu tách nhóm. –
Có: một số nguyên, dấu tách hàng nghìn. –
Một lựa chọn sẽ là tước dấu phẩy:
"265,858".replaceAll(",","");
Giải pháp đơn giản và nhanh hơn: 'thay thế' thay vì' replaceAll'. –
Hãy thử điều này:
String x = "265,858 ";
x = x.split(",")[0];
System.out.println(Integer.parseInt(x));
EDIT: nếu bạn muốn nó làm tròn đến số nguyên gần nhất:
String x = "265,858 ";
x = x.replaceAll(",",".");
System.out.println(Math.round(Double.parseDouble(x)));
Bạn có thể xóa ,
trước khi phân tích cú pháp thành số:
int i = Integer.parseInt(myNumberString.replaceAll(",", ""));
Điều đầu tiên mà nhấp chuột với tôi, giả sử đây là một số duy nhất, là ...
String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);
Hoặc bạn có thể sử dụng NumberFormat.parse
, đặt nó thành số nguyên duy nhất.
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html#parse(java.lang.String)
Nếu nó là một trong số & bạn muốn loại bỏ dải phân cách, NumberFormat
sẽ trả về một số cho bạn. Chỉ cần đảm bảo sử dụng đúng Locale khi sử dụng phương thức getNumberInstance
.
Ví dụ: một số Locales hoán đổi dấu phẩy và dấu thập phân cho những gì bạn có thể sử dụng.
Sau đó, chỉ cần sử dụng phương thức intValue
để trả lại số nguyên. Bạn sẽ phải bọc toàn bộ thứ trong một khối try/catch, để tính đến Parse Exceptions.
try {
NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
//Handle exception
}
câu hỏi không sạch sẽ, ',' là gì? hàng nghìn hoặc dấu phân cách thập phân? –
Tôi nghĩ rằng đó là ... Có cách nào để phân tích nó thành ** một số nguyên **? – SiB
hoặc là 2 số nguyên trong định dạng csv? 265 và 858? –