2013-08-22 72 views
0

I'm得到那個讓我發瘋了一個錯誤......我不能找到什麼是錯的這個代碼,任何人會這麼好心給我一些幫助嗎?簡單的循環,不是那麼簡單的錯誤


using System; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     for(int i = args[0].Length; i >= 1; i--){ 
      Console.WriteLine(args[0].Substring(i, 1)); 
     } 
    } 
} 

一個運行的例子應該是這樣:的Program.exe 6735

並且輸出看起來像:

到目前爲止,我收到的唯一的事情是:

未處理的異常信息:System.ArgumentOutOfRangeException:+了startIndex長度 > this.length參數名:長度在 System.String.Substring(的Int32的startIndex ,的Int32長度)[0x00000]在 :0在Program.Main(System.String []參數)[0x00000]中:0

預先感謝您的幫助!

回答

3

for(int i = args[0].Length; i >= 1; i--)

應該

for(int i = args[0].Length - 1; i >= 0; i--)

+0

非常感謝! :)這只是完美的解決方案!我沒有意識到的是,在12345的情況下,args [0] .Length是5,但每個數字的索引從0到4不等於1到5!在 – AcidRod75

1

args[0].Length是你的字符串的長度。由於字符串是0索引,所以長度是超過字符串中最後一個字符的一個索引。

如果你想循環反向通過一個字符串,你應該在Length - 1開始你的迭代器。

+0

之前已經看到args [0] .Length不是數組的長度,是包含在數組的索引0處的元素的長度。任何方式,謝謝你的迴應。 – AcidRod75

+0

@ AcidRod75你說得對,對不起。它是包含在「args [0]」中的字符串的長度,而不是數組的長度。我會適當地編輯我的答案。 – Paulpro