该代码检查字符串invemail(“ sammy99gmail.com”)中的字符。请注意,电子邮件是如何缺少“ @”符号的,此程序应告诉您是否存在“ @”符号,如果是,则打印“ invemail是有效电子邮件”,否则打印invemail“无效”。

问题是我在第二个“ if”语句的“ emailfound”上突出显示了一个错误。我究竟做错了什么?

码:

String invemail = "sammy99gmail.com";


    for (int i = 0; i < invemail.length(); i++)
    {
        char emailfind = invemail.charAt(i);
        if (emailfind == '@')
        {
            boolean emailfound = true;
        }

        else
        {
            boolean enotfound = false;
        }


    }

    if (emailfound = true)
    {
        System.out.println(invemail + "is a valid email");
    }
    else
    {
        System.out.println(invemail + "is invalid");
    }

最佳答案

如果找不到@符号,则根本不会声明布尔的emailfound!因此,编译器给出了一个错误,指出该代码的那部分可能不存在emailfound。要解决此问题,只需在第一个if语句之外声明布尔值,以便在到达第二个if语句时该布尔值仍然存在:

boolean emailfound = false;
for(int i = 0; i < invemail.length(); i++)
//etc


通过默认将其设置为false,这意味着您在找不到@符号时无需将其设置为false,因此这里不需要else。请注意,当找到@时,应将true分配给emailfound而不声明一个新值:emailfound = true;而不是执行boolean emailfound = true;,因为这将导致有关重复的局部变量的错误。

我发现的另一件事是第二个if语句:if (emailfound = true)。小心点!您使用的是=而不是==,这意味着它将实际上将值true分配给emailfound而不是评估它是否等于true!实际上,您根本不需要比较它,if语句期望一个布尔值,而emailfound是一个布尔值。为了避免出现此错误,最好总是精确地执行if(emailfound)而不是if(emailfound == true)

10-05 21:51