Rumah  >  Artikel  >  Java  >  Penyelesaian pengecualian NumberFormatException

Penyelesaian pengecualian NumberFormatException

DDD
DDDasal
2023-07-26 10:26:234807semak imbas

Penyelesaian pengecualian NumberFormatException: 1. Gunakan pernyataan cuba-tangkap untuk menangkap pengecualian Anda boleh meletakkan fungsi penukaran dalam blok cuba dan mengendalikan pengecualian dalam blok tangkapan 2. Anda boleh menggunakan ungkapan biasa untuk mengesahkan sama ada rentetan mematuhi keperluan format jenis berangka, jika rentetan tidak memenuhi keperluan, kami boleh menangani ralat terlebih dahulu 3. Gunakan kaedah statik isDigit() untuk mengesahkan sama ada aksara itu adalah nombor. kita boleh menangani kesilapan lebih awal.

Penyelesaian pengecualian NumberFormatException

NumberFormatException ialah ralat pengaturcaraan biasa, yang biasanya berlaku apabila menukar rentetan yang tidak sah kepada jenis angka. Pengecualian ini berlaku dalam Java dan beberapa bahasa pengaturcaraan lain, biasanya disebabkan oleh data input yang salah. Dalam artikel ini, kami akan meneroka punca pengecualian NumberFormatException dan cara untuk menyelesaikannya.

Sebab pengecualian NumberFormatException adalah terutamanya kerana format rentetan tidak memenuhi keperluan jenis berangka. Sebagai contoh, apabila kita menggunakan fungsi Integer.parseInt() untuk menukar rentetan bukan angka kepada integer, NumberFormatException akan dilemparkan. Ini juga berfungsi untuk menukar rentetan kepada jenis angka lain, seperti terapung atau long.

Sebab utama NumberFormatException adalah seperti berikut:

1 Rentetan mengandungi aksara bukan angka: Jika rentetan mengandungi aksara selain nombor, seperti huruf, simbol atau ruang, ia tidak akan ditukar menjadi angka. jenis, menyebabkan pengecualian NumberFormatException.

2. Rentetan itu kosong atau batal: Jika kita menghantar rentetan kosong atau null kepada fungsi penukaran jenis angka, NumberFormatException juga akan dilemparkan.

3 Rentetan mengandungi titik perpuluhan atau notasi saintifik: Sesetengah fungsi penukaran jenis berangka hanya boleh mengendalikan integer Jika rentetan mengandungi titik perpuluhan atau notasi saintifik (seperti 1.5 atau 1e10), NumberFormatException akan dicetuskan. .

Sekarang mari kita bincangkan cara menyelesaikan pengecualian NumberFormatException. Berikut ialah beberapa kaedah yang biasa digunakan:

1 Gunakan pernyataan cuba-tangkap untuk menangkap pengecualian: Penyelesaian yang paling mudah ialah menggunakan kenyataan cuba-tangkap untuk menangkap pengecualian NumberFormatException. Kita boleh meletakkan fungsi penukaran dalam blok percubaan dan mengendalikan pengecualian dalam blok tangkapan. Dengan cara ini, walaupun pengecualian berlaku, program boleh terus dilaksanakan.

try {
int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
System.out.println("输入的字符串无法转换为整数");
}

2 Gunakan ungkapan biasa untuk mengesahkan format rentetan: Sebelum melakukan penukaran jenis berangka, kami boleh menggunakan ungkapan biasa untuk mengesahkan sama ada rentetan itu memenuhi keperluan format jenis berangka. Jika rentetan tidak memenuhi keperluan, kami boleh mengendalikan ralat terlebih dahulu dan bukannya menunggu pengecualian NumberFormatException dibuang.

3 Gunakan kaedah statik isDigit() untuk mengesahkan sama ada aksara itu ialah nombor: Sebelum melakukan penukaran rentetan, kita boleh menggunakan kaedah statik isDigit() kelas Aksara untuk mengesahkan sama ada setiap aksara dalam rentetan ialah nombor. Kita boleh melakukan pengendalian ralat lebih awal jika aksara bukan angka hadir.

boolean isValid = true;
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
isValid = false;
break;
}
}
if (isValid) {
int num = Integer.parseInt(str);
} else {
System.out.println("输入的字符串包含非数字字符");
}

4 Gunakan kaedah tryParse() untuk mengelakkan pengecualian melontar: Dalam versi Java yang lebih baharu, beberapa jenis angka (seperti Integer) menyediakan kaedah statik tryParse(), yang boleh cuba menukar rentetan kepada jenis angka, Tiada pengecualian NumberFormatException akan dibuang. Jika penukaran berjaya, ia mengembalikan nilai yang ditukar, jika tidak ia mengembalikan null.

Integer num = Integer.tryParse(str);
if (num != null) {
// 转换成功
} else {
// 转换失败
}

Melalui kaedah di atas, kami boleh menyelesaikan pengecualian NumberFormatException dengan berkesan. Sama ada anda menggunakan pernyataan cuba-tangkap untuk menangkap pengecualian, mengesahkan format rentetan terlebih dahulu atau menggunakan kaedah tryParse() untuk penukaran, anda boleh mengelakkan program daripada ranap kerana rentetan input tidak boleh ditukar kepada jenis angka. Selain itu, amalan pengaturcaraan yang lebih baik ialah menyemak dengan teliti kesahihan data input sebelum menukar rentetan kepada jenis angka untuk mengelakkan pengecualian ini.

Atas ialah kandungan terperinci Penyelesaian pengecualian NumberFormatException. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn