Java While循环输入验证

Java While循环输入验证,java,validation,input,Java,Validation,Input,您好,我想知道如何在if语句的while上进行验证,以便仅当用户输入命令move line circle及其参数时,程序才会执行。例如,如果用户输入move200,程序会说Invalid,因为只有一个或没有参数。 谢谢 替换这个 if (command.equalsIgnoreCase("move")) { move1 = Integer.parseInt(splitUpText[1]); move2 = Integer.parseInt(splitUpText[2]);

您好,我想知道如何在if语句的while上进行验证,以便仅当用户输入命令move line circle及其参数时,程序才会执行。例如,如果用户输入move200,程序会说Invalid,因为只有一个或没有参数。 谢谢

替换这个

if (command.equalsIgnoreCase("move")) {
    move1 = Integer.parseInt(splitUpText[1]);
    move2 = Integer.parseInt(splitUpText[2]);
    g.moveTo(move1, move2);
}
何处

并将其应用于其他命令。

替换此命令

if (command.equalsIgnoreCase("move")) {
    move1 = Integer.parseInt(splitUpText[1]);
    move2 = Integer.parseInt(splitUpText[2]);
    g.moveTo(move1, move2);
}
何处

并将其应用于其他命令。

您可以使用:

if (splitUpText.lenght() != 3)
    System.err.println("Invalid...");
您可以使用:

if (splitUpText.lenght() != 3)
    System.err.println("Invalid...");

在这种情况下,为if语句添加额外的条件,例如,您可以说

if(command.equalsIgnoreCase("move") && splitUpText.length == 3){

 //do necessary actions
}
对于move命令,数组大小不应小于或大于3


根据每个命令的参数为其他if语句添加条件。

在这种情况下,为if语句添加额外条件,例如

if(command.equalsIgnoreCase("move") && splitUpText.length == 3){

 //do necessary actions
}
对于move命令,数组大小不应小于或大于3


根据每个命令的参数为其他if语句添加条件。

可能参数数量错误或参数无效。用这个来抓住他们所有人:

if (command.equalsIgnoreCase("move")) {
    try {
       move1 = Integer.parseInt(splitUpText[1]);
       move2 = Integer.parseInt(splitUpText[2]);
       g.moveTo(move1, move2);
    } catch (ArrayIndexOutOfBoundsException e1) {
       Sytem.out.println("Please specify 2 parameters!")
       continue;
    } catch (NumberFormatException e2) {
       Sytem.out.println("Invalid parameters!")
       continue;
    }
}

参数的数量可能错误,也可能无效。用这个来抓住他们所有人:

if (command.equalsIgnoreCase("move")) {
    try {
       move1 = Integer.parseInt(splitUpText[1]);
       move2 = Integer.parseInt(splitUpText[2]);
       g.moveTo(move1, move2);
    } catch (ArrayIndexOutOfBoundsException e1) {
       Sytem.out.println("Please specify 2 parameters!")
       continue;
    } catch (NumberFormatException e2) {
       Sytem.out.println("Invalid parameters!")
       continue;
    }
}

如果将所有这些请求包装在命令对象中会怎么样?我认为命令设计模式非常适合您的情况

如果将所有这些请求包装在命令对象中会怎么样?我认为命令设计模式非常适合您的情况

您可以强制用户使用其他输入格式,例如move:200,只需检查splitUpText的长度即可。如果不是3,则在显示消息后继续while循环。您可以强制用户使用其他输入格式,例如move:200只需检查splitUpText的长度。如果不是3,则在显示消息后继续while循环。相当难看-为什么不简单地检查splitUpText的长度?相当难看-为什么不简单地检查splitUpText的长度?相当难看-为什么不简单地检查splitUpText的长度?因为他无论如何都需要try\catch来获取NumberFormatException,通过这种方式,他可以在命令中添加参数并执行其操作,而无需记住同时更新if语句。相当难看-为什么不简单地检查splitUpText的长度呢?因为他无论如何都需要try\catch来获取NumberFormatException,通过这种方式,他可以始终向命令添加参数并实现其操作,而无需记住也要更新if语句。