该代码检查字符串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)
。