2013-05-02 51 views
-1

我相当新的Java和我不知道为什么这段代码不编译。它有时也不会返回我的结果。有什么建议么?.class在我的方法预期的错误,有时缺少返回语句错误

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; 
     } 
+4

你需要大括号。 – SLaks 2013-05-02 15:18:23

+0

我应该在哪里添加它们? – user2340601 2013-05-02 15:22:20

+1

你应该返回一个'boolean',而不是'char'。 – SLaks 2013-05-02 15:25:54

回答

0

你需要把括号中的for声明否则将只取前行

你的错误很可能是y超出范围,当你使用它

您还必须在for 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; 
} 
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循环

0

The braces after a for-statement or if-statement are optional,但紧跟在该行后面的语句可能只有一条。

在第一种情况下,result只在for的范围内定义。如果你试图在其他地方引用它,它将不存在(导致范围问题)。

你的第二种情况会令人惊讶地发挥作用 - 在for或if之后的每个语句都是它自己的语句。

但为了可读性和可靠性,它是强烈鼓励在for语句和if语句中使用大括号。否则,你的代码会非常脆弱。