【发布时间】:2020-11-22 15:21:30
【问题描述】:
我使用 Java 中的 Scanner 来获取用户条目,例如姓名、姓氏、电子邮件和电话。姓名和姓氏是必需的,但电子邮件和电话不是必需的,用户只需按 Enter 键即可将其留空。
这是我用来验证每个条目的长度并在长度低于或超过 lngMin 或 lngMax 时显示错误消息的方法。
public static String validateString (String msgSoll, String msgErr,
int lngMin, int lngMax) {
String myString = null;
if (lngMin >= 0 && lngMax >= lngMin) {
do {
System.out.print(msgSoll);
myString = myScanner.nextLine();
if (myString.length() < lngMin || myString.length() > lngMax) {
System.out.println(msgErr);
}
} while (myString.length() < lngMin || myString.length() > lngMax);
}
return myString;
}
我有这个方法来验证电子邮件,我调用了 validateString 方法和其他方法来验证电子邮件是否包含至少 1 个点和只有一个 @ 以及特殊字符和数字字符。在这种方法中,我想验证电子邮件是否为空,如果它返回一个空电子邮件作为有效值。
public static String validateEmail() {
String email = null;
String validEmail = null;
boolean isAlpha = false;
do {
email = validateString(MSG_SOLL_COURRIEL, MSG_ERR_COURRIEL, 5, 50);
isAlpha = Tp2Utils.isAlphaNumPlus(email, "@,.,_") && Tp2Utils.hasNChar(email, '.') >= 1 && Tp2Utils.hasNChar(email, '@') == 1;
if (isAlpha) {
validEmail = email;
}
} while (!isAlpha);
return validEmail;
}
我有这种方法来验证电话,我使用一种方法来验证 tel 是否仅包含数字字符。在该方法中,我还需要验证 tel 是否为空,如果是,则将空 tel 作为有效值返回。
public static String validateTel() {
boolean telValid = false;
String tel = null;
String telVal;
do {
tel = validateString(MSG_SOLL_TEL, MSG_ERR_TEL, 10, 10);
telValid = Tp2Utils.containsOnlyNums(tel);
} while (!telValide);
telVal = tel;
return telVal;
}
如果有人能帮助我解决我的验证问题,我将不胜感激。
谢谢
【问题讨论】:
-
返回被验证字符串的验证方法不好,它应该返回例如 true/false 来说明字符串是否有效。因此,将扫描仪的读取和实际验证分为 2 种方法
标签: java string validation