簡體   English   中英

用數字數組C#分隔數字

[英]separating number in array of digits C#

我是編程新手,目前僅使用C#進行練習。 所以我的問題是:我試圖用數組分隔數字中的一個數字(例如:數字12345變成數字{1,2,3,4,5})。 我編寫一些代碼,這里是:

  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)。 我不知道該如何解決,所以有人可以幫助我嗎?

嘗試的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();

i開始時等於num ,而后者又開始時是您輸入的數字,可以遠大於3。例如,如果我輸入123作為輸入數字,則循環首先嘗試訪問digits[123]這是waaaaaay該數組的范圍之外。

您將需要調整for循環,以使i以更合理的數字開始:

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

或者,您可以將i從0開始並逐步提高:

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

問題是初始化數組時您沒有分配正確的空格數,例如在下面的代碼行中:int [] digits = new int [3]; ..相反,您應該首先讀取輸入,然后計算輸入的數字(字符)的數量,然后分配具有該數量的元素的數組。。請記住,數組從索引0開始。 ] ..然后是數字[1] ...數字[2] ..等,從循環內開始,直到輸入了所有數字。

試試這個代碼:

    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();

嘗試這個

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

嘗試這個

 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');
         }
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM