gpt4 book ai didi

c# - 在 C# 中显示 2 个集合的并集

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:07 25 4
gpt4 key购买 nike

我有一个 C# 代码,我在其中询问用户他想要创建的集合的数量,然后在这些集合中输入元素。从这些集合中,他选择 2 个集合并显示所选集合的并集。

在下面的代码中,集合中的元素没有被添加到 _items 中,也没有显示 Union。

感谢您的帮助。

namespace Union
{

class Program
{
static List<SortedSet<string>> _items = new List<SortedSet<string>>();
static SortedSet<string> set = new SortedSet<string>();

static void Main(string[] args)
{
int i, j, a, b;
string k;
Console.WriteLine("\n Enter the number of set to be used: ");
i = Convert.ToInt32(Console.ReadLine());
for ( j = 1; j <= i; j++)
{
SortedSet<string> set = new SortedSet<string>();
do
{
Console.WriteLine("Enter first element in set {0}:", j);
k = Console.ReadLine();
if (k != "stop")
set.Add(k);
} while (k != "stop");
_items.Add(set);
}
Console.WriteLine("Enter index of 1st set of union:{0}");
b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter index of 2nd set of union:{0}");
c = Convert.ToInt32(Console.ReadLine());
DisplayUnion(a, b);
}

public static void DisplayUnion(int a, int b)
{
SortedSet<string> set1 = _items[a];
SortedSet<string> set2 = _items[b];
set1.UnionWith(set2);
Console.WriteLine(set1);
}
}
}

最佳答案

通过修改 Main()DisplayUnion(int a, int b) 方法完全编辑了我的答案,以实现更好的表示并包括边界情况。Main() 方法:

static void Main(string[] args)
{
int i, j, a, b;
string k;
Console.WriteLine("Enter the number of sets to be used: ");
i = Convert.ToInt32(Console.ReadLine());
for (j = 1; j <= i; j++)
{
SortedSet<string> set = new SortedSet<string>();
var index = 0;
do
{
index++;
Console.WriteLine($"Enter {index} element in set {j}:");
k = Console.ReadLine();
if (k != "stop")
set.Add(k);
} while (k != "stop");
_items.Add(set);
}

if (_items.Count == 0)
{
Console.WriteLine("You have no sets to union.");
return;
}

if (_items.Count == 1)
{
Console.WriteLine("Union of only set is: " + string.Join("", _items[0]));

return;
}

while (true)
{
Console.WriteLine("Enter index of 1st set of union:{0}");
a = Convert.ToInt32(Console.ReadLine());
if (a < _items.Count)
{
break;
}

Console.WriteLine($"Set {a} does not exists.");
}

while (true)
{
Console.WriteLine("Enter index of 2nd set of union:{0}");
b = Convert.ToInt32(Console.ReadLine());
if (b < _items.Count)
{
break;
}

Console.WriteLine($"Set {b} does not exists.");
}

DisplayUnion(int a, int b) 方法:

public static void DisplayUnion(int a, int b)
{

SortedSet<string> set1 = _items[a];
SortedSet<string> set2 = _items[b];
set1.UnionWith(set2);
Console.WriteLine($"Union of set {a + 1} with set {b + 1} is: " + string.Join("", set1));
}

您收到 outOfRangeException,因为您为集合输入了无效索引,而没有检查它实际上是无效的任何地方。我通过添加两个 while 循环 解决了这个问题。我还为集合为 0 或 1 的边界情况添加了两个 if 语句

希望对您有所帮助。

关于c# - 在 C# 中显示 2 个集合的并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40519872/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com