怎么说用户输入项存在于数组中? [更新]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么说用户输入项存在于数组中? [更新]相关的知识,希望对你有一定的参考价值。

我是c#的初学者,我被分配了以下问题:编写一个程序,收到8个正整数的数组,然后从用户那里收到一个数字,然后计算该数字在数组中的可能性。这应该继续,直到我们输入-1。例如,这是我的字符串:1,1,1,2,2,3,4,5然后我输入2,所以它应该返回./25这是输入和输出应该是这样的:

输入:

1,2,3,4,5,6,7,8

1

2

3(输入直到我们输入-1)

-1

输出:

./125

./125

./125

结束(-1)

到目前为止,这是我的代码:

Console.WriteLine(“输入8个int值”);

        string line = Console.ReadLine();
        string[] sps = line.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries);
        int[] myint = new int[8];
        myint = Array.ConvertAll(sps, int.Parse);

        int b = Convert.ToInt32(Console.ReadLine());
        int a;

        int[] yep = new int[8];
        do
        {
            Console.WriteLine("enter a number");
            a = Convert.ToInt32(Console.ReadLine());
            for (int j = 0; j < yep.Length; j++)
            {
                yep[j] = a;
            }


        } while (a != -1);

        if (a == -1)
        {
            int count = 0;
            for (int i = 0; i < myint.Length; i++)
            {


                for (int j = 0; j < yep.Length; j++)
                {
                    Console.WriteLine(yep[j]);

                    if (yep[j] == myint[i])
                    {
                        Console.WriteLine((double)count / (double)myint.Length);
                        count++;
                    }
                 else
                        Console.WriteLine(Convert.ToInt32(0));
                }
            }
        }         

我收到了一串数字,将它转换成一个int数组,然后我收到了用户的整数,然后我做了输出的algotithm;首先我确定,直到我们输入-1;输入必须存储在一个数组中然后当a == - 1时我们将移动到如果检查条件是否存在第一个字符串中的输入(我们已经在开头转换为数组)。这种循环有些不对劲。他们没有给我正确的答案(输出是0 -1 0 -1不断),我也不知道如何声明“结束”部分。我知道这是一个非常基本的问题,但如果你帮忙,我会很高兴。

答案

添加以下行:

            int count = 0;
            for(int i = 0; i < myint.Length; i++)
            {
                if (myint[i].Equals(b))
                    count++;
            }
            Console.WriteLine((double)count / (double)myint.Length);

输出:

enter 8 int values
1,1,1,2,2,3,4,5
enter a number
2
0.25
Press any key to continue . . .
另一答案

试试这个:

Console.WriteLine("enter 8 int values");
string line = Console.ReadLine();
List<string> myList = new List<string>(line.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries));

string b = "";
Console.WriteLine("enter a number");
while ((b = Console.ReadLine()) != "-1")
{
    decimal prob = (decimal)myList.Where(s => s == b).Count() / myList.Count();

    Console.WriteLine("probability = " + prob + "
enter a number");

}

你必须在顶部添加using System.Collections.Generic;

另一答案

考虑您要求用户输入用逗号分隔的数字字符串,并将其拆分为字符串数组(或int数组,如您所愿):

Console.WriteLine("Enter array of numbers:");
string line = Console.ReadLine();
string[] numbers = line.Trim().Split(',');

然后你要求用户输入他想要计算概率的所需数字:

Console.WriteLine("Enter your number: ");
string number = Console.ReadLine();

然后像这样计算概率:

double probability = (double)numbers.Count(num => num == number) / numbers.Length;

这是一个link to DotNetFiddle

这应该完成任务。如果您有任何疑问,请评论。

另一答案

我想有比这更好的方法,但它仍然必须工作

int[] List = new int[]{1,2,3,4,5,4,4,3};
int count = 0;
foreach(int d in List)
{
   if(d == reqNo)
   {
    count++;
   }
}

这里reqNo是你需要在数组中找到的数字

以上是关于怎么说用户输入项存在于数组中? [更新]的主要内容,如果未能解决你的问题,请参考以下文章

为啥此代码片段返回意外结果?

C# - 如何检查用户的输入是不是存在于组合框中(使用的数据绑定项)

如何让 vuejs 过滤器为数组内的嵌套项工作?

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

js中怎么把值放入数组中

即使元素存在于数组中,也总是找不到输出[重复]