2011-10-27 51 views
0

我有下面的代碼,它返回一個錯誤。簡單的方法查詢

行:

return first; 

說:

不兼容的類型,所需要的:char []

看起來簡單的東西,但我無法弄清楚。我試圖顯示調用methodB的值。

另外,您會注意到我已將#if聲明評論爲#4。有人能進一步理解我的一點。

這是否if聲明更新由可變first舉行的值。如果在alphas當前元素保存的值來的first當前值過嗎?

希望這是有道理的,有人可以提供幫助。遲到了,我的大腦不再工作了。 Java會打破或破壞我!

package openuniversity; 

public class Main 
{ 

    public static void main(String[] args) 
    { 
     Main m = new Main(); 
     char [] alp = m.methodB(); 

     for (char b: alp) 
     { 
      System.out.println(b); 
     } 
    } 

    public static char[] methodB() 
    { 

     char [] alphas = {'s','a','u','s','a','g','e'}; 
     char first = alphas[0]; 
     for (int i= 1; i < alphas.length; i++) //3 
     { 
      if (alphas[i] < first) //4 
      { 
      first = alphas[i]; 
      } 
     } 
     return first; 
    } 
} 
+2

'methodB'被聲明爲返回'char []',但你試圖返回一個'char'。 –

+0

謝謝。 你能告訴我我需要改變什麼嗎?從我的方法頭中刪除char []沒有解決問題:/ –

+1

我會認真考慮編程/ java的初學者指南。你聲明方法返回一個特定類型的東西,然後你返回那種類型的東西。如果你嘗試並返回不同類型的東西,它將不會編譯。 –

回答

0
package openuniversity; 

public class Main 
{ 

    public static void main(String[] args) 
    { 
     Main m = new Main(); 
     char alp = m.methodB(); 

     System.out.println(alp); 
    } 

    public static char methodB() 
    { 

     char [] alphas = {'s','a','u','s','a','g','e'}; 
     char first = alphas[0]; 
     for (int i= 1; i < alphas.length; i++) //3 
     { 
      if (alphas[i] < first) //4 
      { 
      first = alphas[i]; 
      } 
     } 
     return first; 
    } 
} 
+0

非常感謝你。 –

0

你的函數簽名,表示您正在返回一個char[]

public static char[] methodB() 

但實際上,返回char

char first = alphas[0]; 
// ... 
return first; 

這不是完全清楚你想要做什麼,但您需要更改簽名以返回單個字符:

public static char methodB() 

然後改一下它的使用:

char alp = m.methodB(); 

或做的methodB實際上返回char[]。問題是我不知道它實際上應該返回什麼。我建議給這個函數一個更好的名字。你可能想看看Lists

+0

謝謝布倫丹 - 這幫助我瞭解我出錯的地方。正如我上面的評論所述,我正在做這個作爲一個在線課程的一部分,這讓我陷入了困境,我不知道這個方法是做什麼的(沒有給出解釋)或者它在做什麼。 但我得到了返回的值,這部分是我想要的。非常感謝您的幫助,不勝感激! –