2013-05-02 54 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語句中使用大括號。否則,你的代碼會非常脆弱。