我正在开发一个程序,当您错误地输入电子邮件时,它会显示错误消息。如果它为空,则该消息将告诉您它不能为空。如果超过30个字符,则必须小于或等于30,依此类推。我所拥有的程序是我从未在If语句中使用过indexOf。如果输入电子邮件地址只能有一个AtSign(@),我该如何编码?或代码,如果没有@符号或超过2,则会显示错误消息。
import javax.swing.JOptionPane;
public class EmailandGrade {
public static void main(String[] args) {
// 1. Declaring Variables
String strEmail;
// 2. Print Prompts and User Input
strEmail = JOptionPane.showInputDialog("Enter a user email:");
// 3. If/Else Statements For Email
if (strEmail.isEmpty())
{
JOptionPane.showMessageDialog(null, "Can't be blank");
}
else if (strEmail.length() > 30)
{
JOptionPane.showMessageDialog(null, "Email must be less than or equal 30 characters");
}
else if (!strEmail.endsWith("@student.stcc.edu"))
{
JOptionPane.showMessageDialog(null, "Must end with in: @student.stcc.edu");
}
else if (strEmail.indexOf("@") )
{
JOptionPane.showMessageDialog(null, "Can only have one @ in it");
}
答案 0 :(得分:2)
如果String.indexOf(String)
找不到请求的子字符串,则返回-1
,如链接的Javadoc中所述。所以你可以测试一下,
else if (strEmail.indexOf("@") == -1)
然后你需要编写另一个测试来检查两个(或更多)@
个符号。也许使用String.lastIndexOf(String)
之类的,
else if (strEmail.indexOf("@") == -1 ||
strEmail.indexOf("@") != strEmail.lastIndexOf("@"))
答案 1 :(得分:2)
如果您想查看有效的电子邮件。有两种方法来检查它。 1.手动检查字符串是否为空有效长度,模式和其他东西。 2.您可以使用java的模式和匹配器。这是唯一的建议
Ans 1.
String.indexOf(character)
方法返回指定字符第一次出现的字符串中的索引,如果字符未出现,则返回-1。所以你需要添加
else if (strEmail.indexOf("@") == -1)
答案2。
您只需设置正则表达式即可验证电子邮件地址。
public class EmailValidator {
private Pattern pattern;
private Matcher matcher;
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
public EmailValidator() {
pattern = Pattern.compile(EMAIL_PATTERN);
}
public boolean validate(final String hex) {
matcher = pattern.matcher(hex);
return matcher.matches();
}
}
答案 2 :(得分:0)
else if (strEmail.indexOf("@") != -1)
如何使用indexOf的示例正好在上面。基本上,indexOf返回字符串的索引(如果找到)。然后如果找不到则返回-1。