循环结果不正确
Posted
技术标签:
【中文标题】循环结果不正确【英文标题】:Incorrect loop result 【发布时间】:2021-12-18 08:24:35 【问题描述】:第一个数组是随机填充的,它的长度是从控制台设置的。我有一个数组,我需要在其中编写一个重复数字的子数组和重复数字的数量。例如3 3 3 3 3 4,3 3 3 3是重复的数字,4是它们的数字。
问题是如果数组末尾有重复的数字,循环不会输出它们,如果我进入调试模式,我可以看到并不是所有的数字都被写入。可能是什么问题?
for (int i = 1; i < array.Length; i++)
if (array[i - 1] == array[i])
if((i + 1) != array.Length)
duplicateCount++;
addArray = array[i - 1];
duplicate += addArray + " ";
else
duplicateCount++;
lastElement = array[i - 1];
duplicate += lastElement;
else
if (duplicateCount != 1)
addPrevious = array[i - 1];
duplicate += addPrevious + " ";
duplicateArrays.Add(duplicate + duplicateCount);
duplicate = "";
duplicateCount = 1;
else
duplicateCount = 1;
duplicateArrays.Add(duplicate + duplicateCount);
【问题讨论】:
你的问题不清楚,你能用一个例子澄清你在问什么。我建议您仔细阅读 SO tour 部分,因为它显示了 SO 的工作原理。 How to Ask 部分可能会有所帮助。此外,您可能会发现 SO Asking 部分很有用。 不清楚你在问什么,但很可能你只需要使用 GroupBy 您是想说从一个大随机数组中创建各种子数组,这些子数组将具有来自该大随机数组的重复数字,并且最后一个元素包含一个数字,该数字表示如何之前的元素多次出现在子数组中? 如果我对你的问题的理解是正确的,我已经创建了一个代码来做你想做的事情。请检查这是否是您所期望的:onlinegdb.com/dD2_LJgnY @AbhinavPandey,它有效,谢谢 【参考方案1】:虽然 Antidisestablishmentarianism 代码最短,但它使用 ^',它是 C# 8.0 中引入的 index from end 运算符。我对此并不在意,但这是一个值得了解的区别。在旧版本中编译相同的代码会产生编译时异常。我将给出一个很长但对初学者友好的代码,如果你读两遍,它就会很容易理解。
static void Main(string[] args)
int[] RandomArray = new int[] 1, 2, 2, 3, 4, 4, 3, 1, 5, 2, 9, 8, 9, 8, 8, 5, 3, 4, 1 ;
int RandomArrayLength = RandomArray.Length;
List<int[]> SubArrayList = new List<int[]>();
List<int> visited = new List<int>();
for (int i = 0; i < RandomArrayLength; i++)
int elem = RandomArray[i];
if (!visited.Contains(elem))
visited.Add(elem);
List<int> templist = new List<int>();
for (int j = 0; j < RandomArrayLength; j++)
if (elem == RandomArray[j])
templist.Add(elem);
if (templist.Count > 1) //You can remove this condition if you want to include all the elements
int elemCount = templist.Count;
List<int> sublist = new List<int>();
sublist.AddRange(templist);
sublist.Add(elemCount);
SubArrayList.Add(sublist.ToArray());
else
continue;
int SubArrayListCount = SubArrayList.Count;
for (int i = 0; i < SubArrayListCount; i++)
int[] SubArr = SubArrList[i];
int SubArrCount = SubArr.Length;
for (int j = 0; j < SubArrCount; j++)
Console.Write(SubArr[j].ToString() + " ");
Console.WriteLine();
【讨论】:
以上是关于循环结果不正确的主要内容,如果未能解决你的问题,请参考以下文章