2016-12-16 94 views
0

我是編程新手,現在只能用C#練習。所以我的問題是:我試圖用數組分隔數字中的數字(例如:數字12345到數字{1,2,3,4,5})。我做了一些代碼,這裏是:分隔數字數組C#

int num = int.Parse(Console.ReadLine()); 
     int[] digits = new int[3]; 
     int separatedDigit = 0; 


     for (int i = num; num != 0; i--) 
     { 
      digits[i] = num % 10; 
      num = num/10; 

     } 

,但它顯示了我的錯誤「索引超出了數組的範圍之外。」我想這個問題來自於「for」部分,因爲它從位置3開始,數組只有2(0,1,2)。我不知道如何解決它,所以有人可以幫助我嗎?

+0

3#位置,作爲實際引用[2],因爲你開始在位置[0] – gravity

+0

當你的for循環開始,你正在嘗試做的,比如'位數[12345] = 5',運行時不允許作爲索引'12345'在數組中不存在。 – Agalo

+0

12345是我的情況只是例子數爲allays 3個位數... –

回答

0

i開始爲等於num,這反過來又開始爲您所輸入的號碼,可以遠遠大於3.例如,如果我把123作爲輸入號碼,那麼循環首先嚐試訪問digits[123],即waaaaaay超出該數組的界限。

你會想調整你的循環得到i在一個比較合理的數字開始:

for (int i = digits.Length - 1; num != 0; i--) 
{ 
    // ... 

或者,你可以從0開始i和您的方式工作:

for (int i = 0; num != 0; i++) 
{ 
    // ... 
+0

它的工作非常感謝。 :) –

1

嘗試的Linq:濾除'0' .. '9'字符和物化他們到數組:

int[] digits = Console 
    .ReadLine() 
    .Where(c => c >= '0' && c <= '9') // '0'..'9' characters only 
    .Select(c => c - '0')    // '0' should correspond to 0 integer 
    .ToArray(); 
+0

雖然這樣做的工作,我覺得它不解決OP的核心問題。請記住,OP是一個初學者,不僅要知道「什麼」,還要知道「爲什麼」。 – Abion47

+0

對不起,但他是正確的 –

0

試試這個代碼:

string numberSequence = Console.ReadLine(); 
    var numberCount = numberSequence.Length; 
    int[] digitArray = new int[numberCount]; 
    int i = 0; 
    foreach (var number in numberSequence) 
    { 
     digitArray[i] = number; 
     Console.WriteLine(number); 
     i++; 
    } 
    Console.ReadLine(); 
0

試試這個

 int _num = 12345; 
     var g = _num.ToString().Select(x => int.Parse(x.ToString())).ToArray<int>(); 
0

試試這個

string strValue = "19345abc#/"; 
char[] charArray = strValue.ToCharArray(); 
List<int> list = new List<int>(); 
for (int i = 0; i < charArray.Length; i++) 
    { 
     if (char.IsNumber(charArray[i])) 
     { 
      list.Add(charArray[i] - '0'); 
     } 
    } 
相關問題