[英]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.