2015-03-19 71 views
0

我想返回一個數組的Fibonacci序列數組使用我在c#中使用Visual Studio 2010編寫的webservice。 這是我的函數來創建序列並將其存儲在數組'Fibon'返回到客戶端程序。從webservice返回一個數組到客戶端控制檯

public class Service1 : System.Web.Services.WebService 
{ 
    [WebMethod] 
    public long[] Fibonacci(int length) 
    { 
     long[] Fibon; 
     Fibon = new long [length]; 
     Fibon[0] = 0; 
     Fibon[1] = 1; 

     for (int i = 2; i < length; i++) 
     { 
      Fibon[i] = Fibon[i - 2] + Fibon[i - 1]; 
     } 

     return Fibon; 
    } 
}` 

客戶端程序中調用該函數如下:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Service1 webservice = new Service1(); 
     Console.Out.Write("\nHow many number of the Fibonacci sequence do you want returned?\n"); 
     int Number = Convert.ToInt32(Console.In.ReadLine()); 
     long[] Sequence = new long[Number]; 
     Sequence = webservice.Fibonacci(Number); // PROBLEM LINE ******** 
     Console.Out.Write("\nThe Sequence is \n\n"); 
     for (int i = 0; i <= Number; i++) 
     { 
      Console.WriteLine(Sequence[i]); 
     } 
     Console.Out.Write(", \n\nPress ENTER to return"); 
     Console.ReadLine(); 
    } 
} 

我收到錯誤「無法隱式‘詮釋’轉換爲「長[]」 當我運行函數並在它正在工作的瀏覽器上測試它,但返回到客戶端控制檯卻出現錯誤。我究竟做錯了什麼?

+0

您確定您的控制檯應用程序調用了代碼示例中顯示的'Service1.Fibonacci()'方法嗎?您的控制檯應用程序是否指向正確的服務?如果你說是,你有沒有證明這與調試? – 2015-03-19 01:11:24

回答

-1

應該沒有錯誤在該行,應該只有問題的for循環:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Service1 webservice = new Service1(); 
     Console.Out.Write("\nHow many number of the Fibonacci sequence do you want returned?\n"); 
     var Number = Convert.ToInt32(Console.In.ReadLine());    
     var Sequence = webservice.Fibonacci(Number);  
     Console.Out.Write("\nThe Sequence is \n\n"); 
     for (int i = 0; i < Number; i++) // Fixed LINE ******** 
     { 
      Console.WriteLine(Sequence[i]); 
     } 
     Console.Out.Write(", \n\nPress ENTER to return"); 
     Console.ReadLine(); 
    } 
} 
+0

儘管循環錯誤和其他奇怪的編碼元素,錯誤「不能隱式地將類型'int'轉換爲'long []」,您的解決方案並沒有解決這個錯誤。它解決了索引超出範圍的例外。 – 2015-03-19 01:13:35

+0

是的,我知道,但正如我所說,這條線沒有錯 – Peyman 2015-03-19 01:14:44

+0

我不得不改變索引問題和其他幾行代碼,如下面的答案所示。謝謝你們的建議。 – Donkeybags 2015-03-19 15:54:19

0

我按照你的建議Peyman的和解決方案工作。我也不得不改變線路從您的代碼

var Number = Convert.ToInt32(Console.In.ReadLine());    
    var Sequence = webservice.Fibonacci(Number); 

現在的代碼運行,並根據需要返回序列形成我的代碼

int Number = Convert.ToInt32(Console.In.ReadLine());                         
    long[] Sequence = new long[Number]; 
    Sequence = webservice.Fibonacci(Number); 

所建議的線。非常感謝!!!!!

相關問題