每次绘制 C# 删除数组元素

Posted

技术标签:

【中文标题】每次绘制 C# 删除数组元素【英文标题】:Removing array elements per draw C# 【发布时间】:2021-11-20 14:29:14 【问题描述】:

每个人。对于初学者,这是我作为大学新生的第一个 C# 代码(这里仍然是菜鸟),我提前用我的英语道歉。所以基本上我已经尝试解决这个问题 5 个小时了,我真的很擅长这个,这是我第一次在这里寻求帮助。

所以这段代码的目标是:

1.输入一个整数1-2。 1是平局,2是退出

2.一旦抽奖开始,代码将在该名称数组中获得一个随机索引

3.然后应该在该名称数组中删除随机选取的元素,以获得新的随机元素。

4.该过程重复,直到打印时不再出现四个名称。

using System;

    class Program
    
        static void Main(string[] args)
        
           
            bool isTrue = true;
            while (isTrue)
            
                
                //user choices
                Console.WriteLine("[1]Draw\n[2]Exit\n");

                //the input
                Console.Write("Enter action: ");
                int choices = Convert.ToInt32(Console.ReadLine());
                
                //array of names
                string[] names = "Mr. Albert", "Mr. Joshua", "Mr. Bernard", "Mr. Raphael";

                //for random generating of names
                Random rand = new Random();
                int randNames = rand.Next(names.Length);
                
              
                //Draw
                if(choices == 1)
                    Console.WriteLine("Congrats "+names[randNames]);
                    names[randNames] = " ";
        
                    for(int i=0; i < names.Length; i++)
                        Console.WriteLine(names[i]);
                    
                    
                
                else if(choices == 2)
                    isTrue = false;
                
            
            
        
    

所以我的主要问题是在这段代码中使用给定的名称数组

string[] names = "Mr. Albert", "Mr. Joshua", "Mr. Bernard", "Mr. Raphael";

在这部分代码中,我很难弄清楚

if(choices == 1)
   Console.WriteLine("Congrats "+names[randNames]);
          names[randNames] = " ";
   for(int i=0; i < names.Length; i++)
          Console.WriteLine(names[i]);
   
    

我在这里所做的是,每当我在这里抽出所选择的数字时,都应该变成" "that,或者在我抽出三遍时让它看起来是空的。我也尝试搜索这个问题,但没有运气。

结果如下所示:

[1]Draw 
[2]Exit 

Enter action: 1
Congrats Mr. Albert

Mr. Joshua
Mr. Bernard
Mr. Raphael
[1]Draw
[2]Reset
[3]Exit

Enter action: 1
Congrats Mr. Joshua
Mr. Albert

Mr. Bernard
Mr. Raphael
[1]Draw
[2]Reset
[3]Exit

Enter action:

您可以在结果中看到它们不存在,但在下一次抽奖中它们仍然存在。 希望有人可以帮助我,提前感谢您的帮助。

【问题讨论】:

如果你真的想从数组中删除条目,使用支持删除/添加条目的List&lt;string&gt; 会更容易。需要重新创建一个数组来删除项目,请参见:***.com/questions/496896/… 谢谢,我会注意的 【参考方案1】:

在while循环之前声明你的数组:

string[] names = "Mr. Albert", "Mr. Joshua", "Mr. Bernard", "Mr. Raphael";
while (isTrue)

   //do your stuff

现在,您编辑数组并在下一次迭代中声明新数组,该数组未编辑。

【讨论】:

非常感谢,以前从未想过。 如果它解决了您的问题,请将其标记为答案。

以上是关于每次绘制 C# 删除数组元素的主要内容,如果未能解决你的问题,请参考以下文章

C#如何从数组中删除一个元素

C# 改变数组中某个指定元素的值

C# 改变数组中某个指定元素的值

从C#中的数组中删除指定元素的几种方法,超简单

《C#零基础入门之百识百例》(二十一)数组遍历 -- 删除数组零元素

减少数组中的最后一个字符串元素而不在C#中删除它?