.class我的方法中的预期错误,有时缺少return语句错误

时间:2013-05-02 15:17:24

标签: java

我对java很新,我不知道为什么这段代码没有编译。它有时也不会返回我的结果。有什么建议吗?

public static char isPrime(int x)
        {

            for(int y=2;y<x;y++)
                char result = 'r';
                    if(x%y==0)
                    result = 't';
                    else
                    result = 'f';

            return result;
        }

public static char isPrime(int x)
        {
            char result = 'r';
            for(int y=2;y<x;y++)

                    if(x%y==0)
                    result = 't';
                    else
                    result = 'f';

            return result;
        }

3 个答案:

答案 0 :(得分:0)

你需要在for语句中加上括号,否则只需要第一行

您的错误可能是y在您使用时超出范围

您还必须在for循环之外声明result,原因与范围相同

public static char isPrime(int x)
{
    char result = 'r';

    for(int y=2;y<x;y++)
    {  
        if(x%y==0)
            result = 't';
        else
            result = 'f';
    }

    return result;
}

答案 1 :(得分:0)

如果您使用大括号,您的代码将如下所示:

public static char isPrime(int x) {
    for(int y=2;y<x;y++) {
        char result = 'r';
    }
    if(x%y==0) {
        result = 't';
    }
    else {
        result = 'f';
    }

    return result;
}

如您所见,变量y和结果仅在for循环中可见

答案 2 :(得分:0)

The braces after a for-statement or if-statement are optional,但在该行之后可能只有一个声明。

在第一种情况下,result只在for的范围内定义。如果您尝试在别处引用它,它将不存在(导致范围问题)。

令人惊讶的是,你的第二个案例将起作用 - 在for或if之后的每个陈述都是它自己的陈述。

为了便于阅读和提高可靠性,鼓励强烈鼓励使用for语句和if语句。否则,您的代码将非常脆弱。