Java 用户输入验证(请帮助)

Java 用户输入验证(请帮助),java,user-input,Java,User Input,我的课程有1-5个选项 如果有人输入像S这样的字母,密码将被破解 如何停止此操作。有人能告诉我密码吗 我加了一个 if (ticket > 5) { JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)"); 因此,如果用户输入6,它将给他一个错误,因为票证大于5 但是我怎么能用字母顺序来做呢 谢谢请使用以下if语句: if( ticket > 5 || tic

我的课程有1-5个选项

如果有人输入像S这样的字母,密码将被破解 如何停止此操作。有人能告诉我密码吗

我加了一个

if (ticket > 5) {
                JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
因此,如果用户输入6,它将给他一个错误,因为票证大于5 但是我怎么能用字母顺序来做呢
谢谢

请使用以下if语句:

if( ticket > 5 || ticket < 1){
   JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
}
if(票证>5 | |票证<1){
showMessageDialog(null,“选择的票证类型无效(1-5)”);
}
然后,您可以添加一个else语句,用于处理有效票证值

if( ticket > 5 || ticket < 1){
   JOptionPane.showMessageDialog(null, "Invalid ticket type selected (1-5)");
} else {
   //You logic goes here
}
if(票证>5 | |票证<1){
showMessageDialog(null,“选择的票证类型无效(1-5)”);
}否则{
//你的逻辑在这里
}
您的代码中有基本结构,但您只需考虑所有情况,而不是票证大于5

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

您需要检查值,然后将其解析为
int
。在实际解析之前检查是否可以对其进行解析

如果使用
Integer.parseInt(value)
,则可能需要使用
try catch
和catch
NumberFormatException
。如果到达
catch
-块,则该数字无效,无法解析为
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)");
}
字符串值fromUser=。。。
试一试{
int ticket=Integer.parseInt(valueFromUser);
如果(票证<1 | |票证>5){
JOptionPane.showMessageDialog(null,
“选择的票证类型无效(1-5)”;
}
//代码的其余部分
}捕获(数字格式){
//无法分析票证
JOptionPane.showMessageDialog(null,
“无效票,请输入号码(1-5)”;
}
有关更多检查,您可能需要查看:

看看这是否有助于您:

    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)");
    }
char ticket=(char)System.in.read();
布尔isDigit=字符.isDigit(票证);
如果(isDigit){
int option=Integer.parseInt(String.valueOf(ticket));
如果(选项>5 |选项<1){
showMessageDialog(null,“选择的票证类型无效(1-5)”);
}否则{
showMessageDialog(null,“恭喜您选择”+选项);
}
}否则{
showMessageDialog(null,“选择的票证类型无效(1-5)”);
}

在将其解析为
int
之前,需要检查该值。在实际解析之前检查是否可以对其进行解析。如何解析它?你能不能也展示一下代码,它实际上是你问题的相关部分。如果使用
Integer.parseInt(value)
,则可能需要使用
try-catch
NumberFormatException
。如果到达
catch
-块,则该数字无效,无法解析为
int
。请注意,OP允许值
5
1
。你应该替换
=
除了问题不清楚外,你读了吗?这不是问题。是的,我读了问题。他问如何检查车票是否有有效价值。现在,我没有包括检查ticket是否为int类型的检查,但是我讨论了if语句应该是什么,以仅允许ticket值为1-5,包括1-5。我将添加一条注释,说明OP应该遵循类型检查解决方案的其他答案。