显示在数组中找到特定数字的次数
Show how many times a specific number is found in an array
我的代码的第一部分是将输入数字放入数组的地方,这部分工作正常。在第二部分中,您需要读入一个搜索词并在数组中搜索搜索词。搜索后,我需要显示在数组中找到搜索项的次数。第二部分是我试过的但是没有用。
int[] number = new int[20];
int i = 0;
int notnull = 1;
while ( ( i < 20 ) && ( notnull != 0 ) )
{
Console.Write("Give a number <0 = stop> : ");
number[i] = int.Parse(Console.ReadLine());
notnull = number[i];
i++;
}
Console.WriteLine("Give searchterm (number): ");
int searchterm = int.Parse(Console.ReadLine());
int count = 1;
if ( searchterm == number[i] )
count++;
Console.WriteLine("The number {0} shows up {1} times", searchterm, count);
您可以使用 LINQ 的 Count():
轻松计算 Array 或 IEnumerable 中一般情况下必须满足特定条件的项目
Console.WriteLine("Give searchterm (number): ");
int searchterm = int.Parse(Console.ReadLine());
int count = number.Count(i => i == searchterm);
Console.WriteLine("The number {0} shows up {1} times", searchterm, count);
你可以试试这个:
using System.Linq;
using System.Collections.Generic;
static void Test()
{
int capacity = 20;
List<int> numbers = new List<int>(capacity);
Console.WriteLine($"Enter up to {capacity} numbers (0 or not an integer to stop): ");
int value = 0;
do
{
int.TryParse(Console.ReadLine(), out value);
if ( value != 0 )
numbers.Add(value);
}
while ( numbers.Count < capacity && value != 0 );
if ( numbers.Count > 0 )
{
Console.WriteLine();
Console.WriteLine("Enter a number to search occurences: ");
int.TryParse(Console.ReadLine(), out value);
if ( value > 0 )
{
Console.WriteLine();
Console.WriteLine("The number {0} shows up {1} times",
value,
numbers.Count(n => n == value));
}
}
}
样本:
Enter up to a number (0 or not an integer to stop):
1
2
3
1
5
6
7
3
2
0
Enter un number to search occurences:
3
The number 3 shows up 2 times
首先,让我们去掉你的情况下的 幻数 - 20
;让我们更改集合的类型:数组没有 Add
而 List<T>
提供:
List<int> number = new List<int>();
那么让我们对用户输入感到满意:如果用户输入 bla-bla-bla
会怎么样?为了避免崩溃我们可以使用TryParse
代替Parse
:
while (true) {
// 0 is not a good choice; let it be Q (Quit) instead
Console.WriteLine("Give a number or Q to stop : ");
// Trim: let's be nice and tolerate trailing/leading spaces
string input = Console.ReadLine().Trim();
// Let's accept Q, q, quit, etc.
if (input.StartsWith("Q", StringComparison.OrdinalIgnoreCase))
break;
if (int.TryParse(input, out int value))
number.Add(value);
else
Console.WriteLine("Sorry, invalid input");
}
现在我们有 number
可以使用。让我们使用技术 (TryParse)
获得 searchterm
int searchterm = -1; // initialization, let compiler be happy
while (true) {
Console.WriteLine("Give searchterm (number): ");
if (int.TryParse( Console.ReadLine(), out searchterm))
break;
Console.WriteLine("Sorry, invalid input");
}
最后,让我们计算一下count
;通常我们为此放置 Linq:
int count = number.Count(searchterm);
但是,如果您想要好的旧循环
int count = 0;
foreach (var item in number)
if (item == searchterm)
count += 1;
最终建议是使用 字符串插值 比 格式化 更具可读性:
Console.WriteLine($"The number {searchterm} shows up {count} times");
我的代码的第一部分是将输入数字放入数组的地方,这部分工作正常。在第二部分中,您需要读入一个搜索词并在数组中搜索搜索词。搜索后,我需要显示在数组中找到搜索项的次数。第二部分是我试过的但是没有用。
int[] number = new int[20];
int i = 0;
int notnull = 1;
while ( ( i < 20 ) && ( notnull != 0 ) )
{
Console.Write("Give a number <0 = stop> : ");
number[i] = int.Parse(Console.ReadLine());
notnull = number[i];
i++;
}
Console.WriteLine("Give searchterm (number): ");
int searchterm = int.Parse(Console.ReadLine());
int count = 1;
if ( searchterm == number[i] )
count++;
Console.WriteLine("The number {0} shows up {1} times", searchterm, count);
您可以使用 LINQ 的 Count():
轻松计算 Array 或 IEnumerableConsole.WriteLine("Give searchterm (number): ");
int searchterm = int.Parse(Console.ReadLine());
int count = number.Count(i => i == searchterm);
Console.WriteLine("The number {0} shows up {1} times", searchterm, count);
你可以试试这个:
using System.Linq;
using System.Collections.Generic;
static void Test()
{
int capacity = 20;
List<int> numbers = new List<int>(capacity);
Console.WriteLine($"Enter up to {capacity} numbers (0 or not an integer to stop): ");
int value = 0;
do
{
int.TryParse(Console.ReadLine(), out value);
if ( value != 0 )
numbers.Add(value);
}
while ( numbers.Count < capacity && value != 0 );
if ( numbers.Count > 0 )
{
Console.WriteLine();
Console.WriteLine("Enter a number to search occurences: ");
int.TryParse(Console.ReadLine(), out value);
if ( value > 0 )
{
Console.WriteLine();
Console.WriteLine("The number {0} shows up {1} times",
value,
numbers.Count(n => n == value));
}
}
}
样本:
Enter up to a number (0 or not an integer to stop):
1
2
3
1
5
6
7
3
2
0
Enter un number to search occurences:
3
The number 3 shows up 2 times
首先,让我们去掉你的情况下的 幻数 - 20
;让我们更改集合的类型:数组没有 Add
而 List<T>
提供:
List<int> number = new List<int>();
那么让我们对用户输入感到满意:如果用户输入 bla-bla-bla
会怎么样?为了避免崩溃我们可以使用TryParse
代替Parse
:
while (true) {
// 0 is not a good choice; let it be Q (Quit) instead
Console.WriteLine("Give a number or Q to stop : ");
// Trim: let's be nice and tolerate trailing/leading spaces
string input = Console.ReadLine().Trim();
// Let's accept Q, q, quit, etc.
if (input.StartsWith("Q", StringComparison.OrdinalIgnoreCase))
break;
if (int.TryParse(input, out int value))
number.Add(value);
else
Console.WriteLine("Sorry, invalid input");
}
现在我们有 number
可以使用。让我们使用技术 (TryParse)
searchterm
int searchterm = -1; // initialization, let compiler be happy
while (true) {
Console.WriteLine("Give searchterm (number): ");
if (int.TryParse( Console.ReadLine(), out searchterm))
break;
Console.WriteLine("Sorry, invalid input");
}
最后,让我们计算一下count
;通常我们为此放置 Linq:
int count = number.Count(searchterm);
但是,如果您想要好的旧循环
int count = 0;
foreach (var item in number)
if (item == searchterm)
count += 1;
最终建议是使用 字符串插值 比 格式化 更具可读性:
Console.WriteLine($"The number {searchterm} shows up {count} times");