2011-10-29 81 views
-3

我正在處理數組和方法。我正在編寫一個代碼,用於計算用戶在數組中輸入的數字的平均值。我想出了第一種方法,但VS告訴我「不是所有的代碼路徑都返回一個值」。當我在Main()方法中測試代碼時,它運行良好,但是當它在我的GetValues()方法中時,我得到錯誤。「不是所有的代碼路徑都返回一個值」

我讀過所有其他帖子,但他們對我來說不太合理,因爲它們的特異性。我知道這不是太困難,但我是一個初學者,並試圖自己理解這一點。

我的程序還沒有完成,下面的代碼只是我的程序的第一部分(方法)。一旦GetValues()工作,那麼想法就是從另一個計算平均值的方法調用這個方法。再次,GetValues()應該捕獲數組。

下面的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace testscores 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
     } 

     private static int[] GetValues() 
     { 

      string inValue; 
      int[] score = new int[5]; 
      int total = 0; 

      for (int i = 0; i < score.Length; i++) 
      { 
       Console.Write("Enter Score {0}: ", i + 1); 
       inValue = Console.ReadLine(); 
       score[i] = Convert.ToInt32(inValue); 
      } 

      for (int i = 0; i < score.Length; i++) 
      { 
       total += score[i]; 
      } 
     } 
    } 
} 

回答

3

您是否試圖返回整數數組score

.... 
     for (int i = 0; i < score.Length; i++) 
     { 
      total += score[i]; 
     } 
     return score; 
    } 

所以,當你調用它像這樣

int[] scores = GetValues(); 
+0

謝謝你,這正是我所做的。現在,如果我想從另一個方法調用返回的值。我應該向方法頭添加一個參數嗎?例如:private static int [] GetValues(int score) – okr

+0

@Oskar不,這意味着你的意思是將一個int傳入你的方法,你可以通過名字得分來訪問......你不需要傳遞任何東西在,你正在創建一個名爲score – heisenberg

+0

@kekekela的本地數組謝謝!因此,如果我想從另一個方法調用存儲在GetValues()中的值,我應該只是稱它爲從該方法鍵入「GetValues」?希望我在解釋我自己 – okr

2

你的函數聲明爲返回int[]但在它沒有單一return聲明。

2

在函數GetValues()的末尾,您需要返回一個int []。編譯器錯誤告訴你什麼?如果您遵循GetValues()中的所有代碼路徑,則至少有一個不會返回值。 (在函數的末尾添加return score)。

+0

謝謝Suroot你可以捕捉到這些陣列!我知道這一定很容易。我不再有這個錯誤了。現在,這是否意味着我必須在方法頭部編寫一個參數「int score」?即私人靜態int [] GetValues(int分數) – okr

+0

很高興我能幫助! – Suroot

1

你的方法不返回任何東西,而不是宣佈無效,但INT []

0

編譯器錯誤是因爲你需要添加一個return score

除此之外,你還做了一個循環填充局部變量'total',然後對那些看起來像設計/邏輯錯誤的東西不做任何事情。基本上,代碼可以被刪除,除非你讓總共是類的成員或出局參數而不是局部變量。你也可以在第一個循環中做這個。

+0

我相信你的意思是'迴歸分數;'。 –

+0

return score [i];會返回一個int,而不是'int []' –

+0

的確,我的壞, – heisenberg

相關問題