Rumah  >  Artikel  >  Java  >  Bagaimanakah pengecualian NumberFormatException dalam Java dihasilkan?

Bagaimanakah pengecualian NumberFormatException dalam Java dihasilkan?

PHPz
PHPzasal
2023-06-24 19:42:091061semak imbas

NumberFormatException dalam Java bermaksud apabila menukar rentetan kepada jenis angka dan didapati rentetan itu tidak memenuhi keperluan format jenis angka, pengecualian ini akan dijana. Berikut akan membincangkan punca, penyelesaian dan strategi mengatasi pengecualian NumberFormatException daripada aspek berikut.

  1. Sebab

Di Jawa, apabila menukar rentetan kepada jenis angka, syarat berikut perlu dipenuhi:

  • Rentetan mengandungi aksara angka sahaja.
  • Rentetan mengandungi hanya satu tanda tambah atau tolak.
  • Rentetan mengandungi hanya satu titik perpuluhan.
  • String tidak boleh mengandungi ruang atau aksara bukan angka lain.

Jika rentetan tidak memenuhi mana-mana keperluan di atas, NumberFormatException akan dijana.

Sebagai contoh, laksanakan kod berikut:

String str = "123.45a";
int num = Integer.parseInt(str);

Oleh kerana rentetan mengandungi aksara bukan angka "a", pengecualian NumberFormatException akan dilemparkan.

  1. Solution

Java menyediakan pelbagai kaedah untuk mengelakkan berlakunya pengecualian NumberFormatException.

  • Gunakan ungkapan biasa untuk menapis aksara bukan angka.

Sebagai contoh, anda boleh menggunakan kod berikut untuk menapis aksara bukan angka dalam rentetan:

String str = "123.45a";
str = str.replaceAll("[^\d.+-]", "");
int num = Integer.parseInt(str);
  • Tangkap pengecualian menggunakan pernyataan cuba-tangkap.

Sebagai contoh, anda boleh menggunakan pernyataan cuba-tangkap dalam kod untuk menangkap pengecualian NumberFormatException:

String str = "123.45a";
try {
    int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
    e.printStackTrace();
}
  • Gunakan kaedah penghuraian jenis berangka untuk mengelakkan pengecualian.

Java menyediakan pelbagai kaedah penghuraian jenis berangka, seperti parseInt, parseLong, parseDouble, dll. Kaedah ini secara automatik akan menapis aksara bukan angka dalam rentetan.

Sebagai contoh, anda boleh menggunakan kod berikut untuk mengelakkan berlakunya NumberFormatException:

String str = "123.45a";
double num = Double.parseDouble(str);
  1. Strategi mengatasi

Strategi tindak balas yang munasabah harus dibangunkan untuk berlakunya NumberFormatException. Berikut ialah beberapa strategi biasa:

  • Semakan format nombor yang dimasukkan pengguna. Tambahkan sekatan ungkapan biasa pada kotak input, atau gunakan papan kekunci angka yang diubah suai untuk menyekat pengguna daripada memasukkan aksara haram.
  • Tapis dan tukar rentetan. Gunakan ungkapan biasa atau kaedah penghuraian berangka dalam kod anda untuk memastikan rentetan mengandungi aksara angka sahaja.
  • Tangkap pengecualian dan gesa pengguna. Gunakan pernyataan cuba-tangkap dalam kod untuk menangkap pengecualian NumberFormatException dan mengeluarkan gesaan kepada pengguna, menggesa pengguna bahawa rentetan input tidak memenuhi keperluan format nombor.

Ringkasnya, pengecualian NumberFormatException berlaku kerana rentetan tidak memenuhi keperluan format jenis nombor. Untuk mengelakkan pengecualian, input pengguna harus diperiksa, rentetan input harus ditapis dan ditukar, dan strategi tindak balas yang munasabah harus dirumuskan.

Atas ialah kandungan terperinci Bagaimanakah pengecualian NumberFormatException dalam Java dihasilkan?. 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