问题是: 编写一个程序,将数据读入int类型的数组中。有效输入为0到10.您的程序应确定输入了多少个值。输出不同条目的列表以及该条目发生的次数。
我到目前为止:
using System;
using System.Collections;
namespace ConsoleApplication25
{
class Program
{
static void Main()
{
ArrayList list = new ArrayList();
string inValue;
Console.WriteLine("Please enter a value from 0-10");
Console.WriteLine("To end the program, type 11");
for (int i = 0; i < 11; i++)
{
Console.Write("Enter Value:", i);
inValue = Console.ReadLine();
i = int.Parse(inValue);
list.Add(i);
list.Remove(11);
list.Sort();
}
int[] c = list.ToArray(typeof(int)) as int[];
foreach (int value in c)
{
Console.WriteLine(value);
}
Console.WriteLine("There are {0} values.", list.Count);
}
}
}
我坚持的地方是显示每个值的计数。我已经尝试使用计数器设置if,并设置有休息的情况并且不成功。我们还没有开始使用LINQ。任何建议或提示将不胜感激。
谢谢,
杰森
答案 0 :(得分:3)
使用Dictionary<int, int>
存储值及其发生次数的计数。简短的例子:
Dictionary<int, int> values = new Dictionary<int, int>();
...
Console.Write("Enter Value:", i);
inValue = Console.ReadLine();
i = int.Parse(inValue);
if(values.ContainsKey(i))
{
values[i]++;
}
else
{
values.Add(i, 1);
}
...
答案 1 :(得分:3)
持续获取用户输入的方法是使用 while 循环,而不是 for 循环,在其中更改 i 他们一直都是。代码应如下所示:
int i = 0;
while (i < 11)
get i, put it in the array
没有理由对数组列表进行排序,并且每次获得新输入时都没有理由对其进行排序。
如果您的输入限制为0..10,请设置11个元素的数组,检查您输入的项目,然后添加到计数中。伪代码应该是这样的:
foreach input
count[input]++
然后,您将在每个计数单元格中获得结果。
答案 2 :(得分:0)
提示:
查看generic dictionaries数据结构,该数据结构将同时包含输入数据和每个数据。
答案 3 :(得分:0)
简而言之,您当前的方法是将所有输入的数字添加到列表中,然后对列表进行排序,这样您就可以获得1,2,3,4,4,4等。然后您想要找到列表中的所有唯一项目及其计数。
为此,您可以迭代数组和
然后,当前值更改时,您将打印上一个值和您看到它的次数。这肯定会奏效,你应该能够以这种方式完成作业。
一些不相关的说明:
List<int>
代替ArrayList
,因为您无需将其转换为int[]
- 您只需使用列表并使用{{1从中获取整数值。list[i]
Sort
循环读取项目,您只能阅读11个(固定计数)项目for
,而不是总是尝试删除值11。正如其他人所提到的,您可以使用Add
来“计算”项目数量,但这是对方法的完全更改。我认为完成你开始做的事情是个好主意......
答案 4 :(得分:0)
您可以使用数组来存储计数而不是实际的整数,并使用数组的索引作为值0-10。然后当您输出唯一值时,您只需检查哪些索引不具有count = 0;例如,array [1]存储输入值1的计数。
答案 5 :(得分:0)
一些提示:
不要使用ArrayList
类,它实际上已经过时了。如果要存储整数列表,请使用List<int>
。
您的循环逻辑无法正常工作。如果输入值10,它将在循环结束时增加到11并退出。相反,如果值为11,则应使用do {} while()
循环退出。
请勿删除值11,而应避免在值为11时添加值。
如果您使用该方法对列表进行排序,请在循环后执行此操作,而不是一遍又一遍地对其进行排序。
您可以保留整数对列表以跟踪值和出现次数,也可以将所有值保留在列表中,对其进行排序,然后在显示结果时计算出现次数。 Dictionary<int, int>
有助于保留整数对列表。
由于有效值限制为0..10,您还可以使用包含11个项目的数组来计算出现次数。显示结果时,跳过计数为零的值。