如何在Java中使用带有If语句的indexOf?

时间:2017-02-19 04:44:28

标签: java

我正在开发一个程序,当您错误地输入电子邮件时,它会显示错误消息。如果它为空,则该消息将告诉您它不能为空。如果超过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");
        }

3 个答案:

答案 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。