如何实现输入无效时用JOptionPane显示错误提示的Java程序?
解决方案:Java Swing 输入校验与分步输入实现
咱们先来梳理下你现有代码的问题:直接调用Double.parseDouble()如果遇到非数字输入会抛出异常,而且没有处理用户点击取消、输入为空的情况,自然没法实现「无效输入弹警告、有效才进下一步」的需求。
下面我给你提供一套完整的实现方案,核心思路是对每个输入项做循环校验,直到用户输入有效内容才进入下一个输入框:
import javax.swing.JOptionPane; public class JoptionInputDialogBisa { public static void main(String[] args) { JOptionPane jop = new JOptionPane(); String nama = null; double tb = 0.0; // 第一步:获取并校验姓名输入 do { nama = JOptionPane.showInputDialog(null, "Masukkan Nama : "); // 处理用户取消输入的情况 if (nama == null) { JOptionPane.showMessageDialog(null, "操作已取消", "提示", JOptionPane.INFORMATION_MESSAGE); return; // 直接退出程序 } // 校验是否为空或仅空格 if (nama.trim().isEmpty()) { JOptionPane.showMessageDialog(null, "Nama tidak boleh kosong!", "Error", JOptionPane.ERROR_MESSAGE); } } while (nama.trim().isEmpty()); // 输入无效就重复弹出输入框 // 第二步:获取并校验身高输入 boolean isValidTb = false; do { String tbInput = JOptionPane.showInputDialog(null, "Masukkan Tinggi Badan (cm) : "); // 处理用户取消输入的情况 if (tbInput == null) { JOptionPane.showMessageDialog(null, "操作已取消", "提示", JOptionPane.INFORMATION_MESSAGE); return; } try { tb = Double.parseDouble(tbInput); // 额外校验身高的合理性(比如大于0) if (tb <= 0) { JOptionPane.showMessageDialog(null, "Tinggi badan harus lebih besar dari 0!", "Error", JOptionPane.ERROR_MESSAGE); } else { isValidTb = true; // 输入有效,退出循环 } } catch (NumberFormatException e) { // 捕获非数字输入的异常 JOptionPane.showMessageDialog(null, "Tinggi badan harus berupa angka!", "Error", JOptionPane.ERROR_MESSAGE); } } while (!isValidTb); // 计算并展示结果 double bbi = (tb - 100) * 0.9; String cetak = String.format("Nama: %s\nTinggi Badan: %.1f cm\nBBI Ideal: %.1f kg", nama, tb, bbi); JOptionPane.showMessageDialog(null, cetak, "Hasil Perhitungan BBI", JOptionPane.INFORMATION_MESSAGE); } }
关键细节说明:
- 循环校验逻辑:用
do-while循环确保用户必须输入有效内容才能进入下一步,避免无效输入直接导致程序崩溃 - 空输入处理:校验姓名是否为空或仅空格,身高输入为空时也会触发异常捕获
- 异常捕获:用
try-catch处理NumberFormatException,当用户输入非数字内容时弹出明确的错误提示 - 取消操作处理:如果用户点击输入框的取消按钮(返回null),会弹出提示并退出程序,避免后续代码报错
- 合理性校验:额外添加了身高必须大于0的校验,让输入逻辑更严谨
内容的提问来源于stack exchange,提问作者Muhammad Arief
相关产品推荐
相关产品推荐

