2013-11-26 166 views
0
public class Key { 

    public Encode() { 
     StringBuffer passWord = new StringBuffer("bubbles"); 
     System.out.println("Original plain text:" + passWord); 

     for (int i = 0; i < passWord.length(); i++) { 
      int temp = 0; 
      temp=(int)passWord.charAt(i); 
      temp= temp* 9; 
      EncodedText = passWord.setCharAt(i , (char)temp); 
      return EncodedText; 
     } 

     //return EncodedText; 
    } 

} 

只是寫一個小程序進行編碼(和解碼)一小塊的文字,但每當我運行了同樣的錯誤信息出現返回類型的錯誤消息

「錯誤:無效的方法聲明,返回類型需要 public Encode(){「 ^

+0

如果你不想返回使返回類型'void',或者當然'返回EncodedText;'然後將是一個錯誤。 –

+1

如果這是一種方法,則需要用適當的返回類型聲明它。 – Andrew

+0

請不要使用StringBuffer,你可以使用StringBuilder來代替。 BTW乘以9比編碼它更可能管理文本。 –

回答

1

你的方法沒有返回類型。它需要這樣才能知道它返回的數據類型。

public <type goes here> Encode() { 

EncodedText = passWord.setCharAt(i , (char)temp); 

沒有道理。 EncodedText是一個類,它在分配給它之前需要一個實例。也許應該是

EncodedText variableName = passWord.setCharAt(i , (char)temp); 

但可能更喜歡(我不知道沒有看到那個類)

EncodedText variableName = new EncodedText(passWord.setCharAt(i , (char)temp)); 

return EncodedText; 

也沒有意義,這正試圖返回一個類,也許你的意思是返回類的實例

return variableName; 

在這種情況下,在第一個錯誤,你可能是指

public EncodedText Encode() { 

除此之外,還有其他一些錯誤,我無法正確地診斷沒有看到EncodedText類。錯誤就像在循環中返回,似乎在構建對象並且缺少創建所述對象。

0

這裏有幾個錯誤。

  1. 您的方法沒有返回類型。
  2. EncodedText沒有類型。
  3. 您不希望return在for循環中,它會使循環無用,因爲它將在第一次迭代中返回。
  4. setCharAt()具有void作爲返回類型,您不能將其分配給一個變量。
0

你需要把返回類型(如字符串,整型,雙等),大概在的StringBuffer這種情況下,publicEncode()之間。嘗試做public StringBuffer Encode() {...}

0

此外,您還沒有遵循適當的Java命名約定。它應該是這樣的:

public returnType methodName(dataType parameter1, dataType parameter2){ 
} 

例如

public int add(int a, int b){ 
    return a+b; 
} 

的命名約定標準的,是指: http://java.about.com/od/javasyntax/a/nameconventions.htm