在JAVA中验证字段的更好方法

月份:

我正在为学校项目制作预订系统。在其中,我需要验证一些字段,并且想知道是否有更好/更有效的方法来实现此目的。

输入示例:

String firstName = "Alex";
String surname = "Smith";
int numberOfGuests = 3;
int numberOfPets = 2;
String email = "[email protected]";

验证:

final int GUEST_MIN = 1;
int guestMax = 4;
final int PETS_MIN = 0;
int petsMax = 4;
boolean presenceCheck = false;
boolean rangeCheck = false;
boolean formatCheck = false;

//Presence Check
if(!(firstName.isEmpty() || surname.isEmpty() || email.isEmpty()))
{
    presenceCheck = true;
}
System.out.println(presenceCheck);

//RangeCheck
if(!(numberOfGuests < GUEST_MIN || numberOfGuests > guestMax || numberOfPets < PETS_MIN || numberOfPets > petsMax))
{
    rangeCheck = true;
}
System.out.println(rangeCheck);

//Format Check
if(email.contains("@"))
{
    formatCheck = true;
}
System.out.println(formatCheck);

我打算对此加以补充,并且想知道是否有一种避免多行if语句的方法。

Harshal Parekh:

您的验证也有一些问题。

如果字符串是null什么?字符串是" "什么?

对于presenceCheck,最好编写一个函数:

public static boolean empty(List<String> strings) {
    // Null-safe, short-circuit evaluation.
    // .trim() removes the whitespace from front and back
    // if anyString is null or empty or space, it will return true, else false
    return strings.stream().anyMatch(s -> s == null || s.trim().isEmpty());
}

然后您可以这样称呼它:

presenceCheck = empty(Arrays.asList(firstName, lastName, email);

您的rangeCheck没有更好的解决方案。除了删除if这样:

rangeCheck = (!(numberOfGuests < GUEST_MIN || numberOfGuests > guestMax || numberOfPets < PETS_MIN || numberOfPets > petsMax));

仅检查@电子邮件是不够的,您应该执行以下操作:

public static final Pattern VALID_EMAIL_ADDRESS_REGEX = 
    Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);

public static boolean validateEmail(String emailStr) {
    return VALID_EMAIL_ADDRESS_REGEX.matcher(emailStr).find();
}

formatCheck = validateEmail(email);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

验证jQuery表单字段组合的更好方法

验证 php 对象字段是否为空值的更好方法

验证服务的更好方法

在Laravel中哪种方法更好地验证访问方法

在 C# 中验证 JSON 模式 - 有更好的方法吗?

在 php 中显示身份验证错误的更好方法

在聚合调用中限制字段属性的更好方法

在json对象中编辑某些字段的更好方法?

比隐藏字段更好的方法来在html中存储数据

在 Java 中定期运行任务的更好方法

在Java中做XML的更好方法

更好的方法是Java中的If(x instanceof y)?

在Java中过滤xml数据的更好方法

在Java中,哪种方法更好?

Java POJO是否应该具有字段验证并在setter方法中引发异常?

显示Java的更好方法

在 Java 中,如何验证 String 是否可以是 JSONArray 以及为什么您的答案比我在问题中展示的方法更好

Java 应用程序使用 DES 来验证 Linux 用户。CentOS 8 中 DES 不再是密码加密选项。有什么更好的方法?

WebForms中的字段验证

在Kotlin中声明数据类中字段的更好方法是什么?

测试验证错误的更好方法

Java:访问包中的类,哪种方法更好?

在Java类中创建对象列表-更好的方法

在Rails中以json形式返回嵌套模型的验证错误的更好方法?

使用 vert.x 在微服务架构中实现身份验证的更好方法

WTF Forms Flask中的字段验证,重定向方法

根据服务方法/ Web API请求验证Blazor中的字段

验证请求中多个字段的最佳方法

测试非空字段的更好方法