使用字符串进行数据验证

时间:2018-12-12 00:46:34

标签: java

我需要做一些数据验证,以确保用户输入这4个选项(小,中,大,超大)中的4个之一 我从未使用String进行数据验证, 必须有另一种方法来工作吗?

verify(doseRepository).deleteById(arg.capture()); // changed to deleteById
assertEquals(dose, arg.capture());

5 个答案:

答案 0 :(得分:3)

说实话,您还挺有经验的,我建议您首先创建一个包含可能选择的集合。

Set<String> choices = new HashSet<>(Arrays.asList("small","medium","large", "super"));

然后只需将while循环条件更改为:

 while (!choices.contains(sizeChoice)){...} // while the chosen size is not in the set of choices then keep looping...

答案 1 :(得分:1)

我会寻求一个简单易读的switch语句(这不太可能是一个问题,但是请注意,您require Java 7+ to use switch with Strings

boolean validated = false;
while (!validated); 
{
    switch (sizeChoice) {
        case "small":
        case "medium":
        case "large":
        case "super":
            validated = true;
            break;
        default: 
            System.out.println("Must be one of the sizes listed above here.");
            System.out.println("What size - small, medium, large, or super size?");
            sizeChoice=input.nextLine();
    }
}

答案 2 :(得分:0)

我会这样:

public static int orderSize()
{
    System.out.println("What size?  \n 1. small \n 2. medium \n 3. large 4. super \n 5. cancel"); 
    int sizeChoice=input.nextInt();
    while (sizeChoice < 1 || sizeChoice > 4 ) 
    {
        System.out.println("Must be one of the sizes listed above here.");
        System.out.println("What size?  \n 1. small \n 2. medium \n 3. large 4. super \n 5. cancel");
        sizeChoice=input.nextInt();
        if(sizeChoice == 5) break;

    }
    return sizeChoice;
}

答案 3 :(得分:0)

您似乎想使用Conditional-AND运算符。

!"small".equals(sizeChoice) && !"medium".equals(sizeChoice) && !"large".equals(sizeChoice ) && !"super".equals(sizeChoice)

正如其他用户所指出的,总是有一种聪明的方式来做同样的事情。如果您想避免重复自己的代码,则与{while循环相比,do/while循环更好。

public static String orderSize() {
    String sizeChoice = null;
    do {
        if (sizeChoice != null) {
            System.out.println("Must be one of the sizes listed.");
        }
        System.out.println("What size - small, medium, large, or super size?");
        sizeChoice = input.nextLine();
    } while (...);
    return sizeChoice;
}

答案 4 :(得分:-1)

如果您进行验证,则假定您有一个控制器。如果只有4,则将输入类型更改为Enum,然后即可进行验证。

以下内容仅是说明我的意思,它是伪代码,可能并非100%正确。

@Controller  
public class ChoiceController {

   @GetMapping("/choose")
   public void choose(SizeEnum size) {
       // rest of the owl here
   }
}