Java:如何在方法中使用变量

时间:2015-08-30 15:12:05

标签: java

代码检查string 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");
    }

3 个答案:

答案 0 :(得分:4)

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

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

默认情况下将其设置为false,这意味着当找不到@符号时,您不需要将其设置为false,因此您不需要此处的else。请注意,当您找到@时,您应该为emailfound分配true而不声明新的emailfound = true;而不是boolean emailfound = true;,因为这会导致重复的局部变量出错。

我发现的另一件事是在第二个if语句中:if (emailfound = true)。小心点!您使用=代替==,这意味着它实际上将<{em>}值<{1}}分配给emailfound而不是评估它是否等于true!实际上你根本不需要比较它,if语句需要一个boolean和emailfound 一个布尔值。最好是true而不是if(emailfound),以避免这种错误。

答案 1 :(得分:0)

您在if语句中声明emailfound。通过这样做,变量是该语句中可见的变量。由于您在代码的其他部分访问emailfound,因此您得到的错误是因为该变量未被全局声明。

更改为:

String invemail = "sammy99gmail.com";
   boolean emailfound = false;
   boolean enotfound = false;

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

        else
        {
            enotfound = false;
        }


    }

答案 2 :(得分:0)

您可以使用布尔值使用标签来编写此内容。

String invemail = "sammy99gmail.com";

found: {
    for (int i = 0; i < invemail.length(); i++) {
        char emailfind = invemail.charAt(i);
        if (emailfind == '@') {
            System.out.println(invemail + "is a valid email");
            break found;
         }
    }
    System.out.println(invemail + "is invalid");
}

您可以通过定义执行检查的方法来避免使用标签。