用户输入验证(请帮助)



我的程序有1-5之间的选项

如果有人输入像S这样的字母,代码将中断我怎样才能阻止这种情况。有人可以给我代码吗

我添加了一个

if (ticket > 5) {
                JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");

因此,如果用户输入 6,它会给他一个错误,因为票证大于 5但是我怎么能用字母顺序做到这一点谢谢

您需要先检查该值,然后再将其解析为 int 。在实际解析之前检查是否可以解析它。

如果您使用Integer.parseInt(value)那么您可能希望使用try-catch并捕获NumberFormatException。如果到达 catch -block,则该数字无效,无法解析为 int 。引用其文档:

NumberFormatException - 如果字符串不包含可解析的整数

以下是您可以做到这一点的方法:

String valueFromUser = ...
try {
    int ticket = Integer.parseInt(valueFromUser);
    if (ticket < 1 || ticket > 5) {
        JOptionPane.showMessageDialog(null,
            "Invalid ticket type selected (1-5)");
    }
    // The rest of your code
} catch (NumberFormatException e) {
    // Ticket could not be parsed
    JOptionPane.showMessageDialog(null,
        "Invalid ticket, please input a number (1-5)");
}

有关更多检查,您可能需要查看:确定字符串是否是 Java 中的整数

看看这是否对你有帮助:

    char ticket = (char) System.in.read();
    boolean isDigit = Character.isDigit(ticket);
    if (isDigit) {
        int option = Integer.parseInt(String.valueOf(ticket));
        if (option > 5 | option < 1) {
            JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
        } else {
            JOptionPane.showMessageDialog(null, "Congrats you choosen " + option);
        }
    } else {
        JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
    }

只需使用这个 if 语句:

if( ticket > 5 || ticket < 1){
   JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
}

然后,您可以为要对有效票证值执行的操作添加 else 语句。

if( ticket > 5 || ticket < 1){
   JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
} else {
   //You logic goes here
}

你的代码中有基本结构,但你只需要考虑所有情况,而不是一个大于 5 的票证。

编辑:正如其他答案所指出的,您还应该检查票证是否为 int 类型。这样,您可以向用户提供更具体的错误消息。

相关内容

  • 没有找到相关文章

最新更新