生成 20 个随机数并在数组中搜索一个数字的程序

Posted

技术标签:

【中文标题】生成 20 个随机数并在数组中搜索一个数字的程序【英文标题】:Program that generates 20 random numbers and search the array for a number 【发布时间】:2020-08-31 00:26:21 【问题描述】:

我想编写一个程序来生成 20 个随机数并在数组中搜索一个数字。如果在输入中输入了 20 个随机数之一,则输出应显示“它在这里”。如果数字不在 ReadLine 中,它应该说“是的,它在那里”。我想知道如何让所有 20 个随机数都能够搜索。现在的代码只能搜索右边的数字。即使输入是 20 个随机数之一,除了右边的那个,它也会说“不,它不在这里。”

图片是我当前的输出。它显示 20 个数字。Output1Output2

public static void Main(string[] args)

    Random random = new Random();
    int[] myIntArray = new int[100];

    for (int i = 1; i <= 20; i++)
    
        int x = random.Next(100);

        myIntArray[i] = x;

        Console.Write(myIntArray[i] + " ");

        if (i == 20)
        

            Console.Write("\nType a number to search for:");
            int z = Convert.ToInt32(Console.ReadLine());
            if (z == x)
            
                Console.WriteLine("Yes it is there.");
            
            else
            
                Console.WriteLine("No it is not here.");
            

        
    

    Console.ReadKey();

【问题讨论】:

听起来像是包含检查。对于数组,您必须使用静态函数来执行此操作,存在:docs.microsoft.com/en-us/dotnet/api/system.array.exists |然而,它确实使用了一些更复杂的高级检查,而不是像“包含”这样的简单相等。 您是否尝试过使用调试器单步执行并尝试查看这段代码实际在做什么?仅仅基于目测,它看起来并不像你想要的那样接近。 错字? int[] myIntArray = new int[100]; new int[20]; 预期; for (int i = 1; i &lt;= 20; i++) 应该是 for (int i = 0; i &lt; 20; i++) - 数组从零开始 你需要三样东西: 1. 一个用随机数初始化数组的循环。 2.用户输入目标号码的方式。这可以包括一个可选的 do/while 循环,以确保用户输入的内容有效。 3. 一个循环检查用户输入是否在数组中的任何位置 |现在,您的输入和检查“涂抹”在 Loop 1 上。 您不需要if (i == 20),只需将用户输入移出循环即可。 【参考方案1】:

您当前的代码检查 20tyh 项 (x) 是否等于用户输入 (z):

    if (i == 20) // 20th item only
        
        int z = Convert.ToInt32(Console.ReadLine());

        if (z == x) // if 20th item (x) equals to user input (z)
        
            Console.WriteLine("Yes it is there.");
        
        else
        
            Console.WriteLine("No it is not here.");
         
     

尝试逐步解决问题:

    声明数组 用随机值填充它 将数组打印出来 向用户询问号码 执行搜索

代码:

public static void Main(string[] args)

    // Array...    
    int[] myIntArray = new int[20]; // We want 20 items, not 100, right? 

    // Of random items
    Random random = new Random(); 

    for (int i = 0; i < myIntArray.Length; ++i)
        myIntArray[i] = random.Next(100);

    // Debug: let's have a look at the array:     
    Console.WriteLine(string.Join(" ", myIntArray));

    // myIntArray is built. Time to ask user for a number
    Console.Write("Type a number to search for:");

    if (int.TryParse(Console.ReadLine(), out int number)) 
         // number is a valid integer number, let's scan myIntArray 
         bool found = false;

         foreach (int item in myIntArray)
             if (item == number) 
                 found = true;

                 break; 
                

        if (found) 
            Console.WriteLine("Yes it is there.");
        else
            Console.WriteLine("No it is not here.");                
    
    else 
        Console.WriteLine("Not a valid integer");

    Console.ReadKey();

编辑:在现实生活中,我们经常使用Linq来查询集合(数组):

using System.Linq;

... 

public static void Main(string[] args)

    Random random = new Random();

    int[] myIntArray = Enumerable
      .Range(0, 20)
      .Select(i => random.Next(100)) 
      .ToArray();   

    Console.WriteLine(string.Join(" ", myIntArray));

    Console.Write("Type a number to search for:");

    if (int.TryParse(Console.ReadLine(), out int number)) 
        if (myIntArray.Any(item => item == number)) 
            Console.WriteLine("Yes it is there.");
        else
            Console.WriteLine("No it is not here.");                
    else 
        Console.WriteLine("Not a valid integer");

    Console.ReadKey();

【讨论】:

【参考方案2】:

所以基本上你应该做一个循环,用一个随机数初始化你的数组

for (int i = 1; i <= 20; i++)
    
        int x = random.Next(100);

        myIntArray[i] = x;
    

之后,您可以在另一个循环中在控制台中搜索键入的值

Console.Write("\nType a number to search for:");
bool isValueFound = false;
int z = Convert.ToInt32(Console.ReadLine());
for(int i=0; i<=20; i++)
    if (z == x)
            
                Console.WriteLine("Yes it is there.");
            
            else
            
                Console.WriteLine("No it is not here.");
            

所有代码:

public static void Main(string[] args)

    Random random = new Random();
    int[] myIntArray = new int[100];

    for (int i = 1; i <= 20; i++)
    
        int x = random.Next(100);

        myIntArray[i] = x;
    
    Console.Write("\nType a number to search for:");
    bool isValueFound = false;
    int z = Convert.ToInt32(Console.ReadLine());
    for(int i=0; i<=20; i++)
        if (z == x)
            
                Console.WriteLine("Yes it is there.");
            
            else
            
                Console.WriteLine("No it is not here.");
            

    Console.ReadKey();

【讨论】:

以上是关于生成 20 个随机数并在数组中搜索一个数字的程序的主要内容,如果未能解决你的问题,请参考以下文章

在 20 个整数的数组中搜索并计算单个随机数

以数组大小 20 打印随机数并以索引号打印数字

JS代码随机生成20个1到100内的奇数,并存到一个数组中

c语言产生4位随机数

生成不重复的随机数

用c语言怎么生成20个[0,20]不相等的随机数?