You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#数组并集输出显示System.Int32[]问题及交、差集实现咨询

问题分析与解决方案

一、控制台显示System.Int32[]的原因及解决

直接输出数组变量时,C#会调用数组默认的ToString()方法,返回的是数组的类型名称,所以会显示System.Int32[]。正确的打印方式有两种:

  • 用string.Join将数组元素拼接成字符串输出
  • 遍历数组逐个输出元素

二、并集(A∪B)的正确实现

你当前代码只是创建了一个长度为两数组之和的空数组,完全没有实现并集逻辑。并集需要包含两个数组中所有不重复的元素,实现思路:

  1. 合并两个数组的元素
  2. 去除重复项(可借助HashSet<int>自动去重的特性)
  3. 将去重后的集合转换为数组

三、交集(A∩B)和差集(A-B)的实现建议

  • 交集:找出同时存在于两个数组中的元素,可通过遍历其中一个数组,检查元素是否存在于另一个数组(注意去重),或使用集合的交集方法。
  • 差集(A-B):找出仅在A中存在、不在B中的元素,可遍历A数组,筛选出不在B中的元素,或使用集合的差集方法。

修正后的完整代码(使用Linq简化实现)

using System;
using System.Linq; // 引入Linq命名空间,方便使用集合操作方法

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            // 输入数组A
            Console.WriteLine("size of A? ");
            int sizeA = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Value of A:");
            int[] arrayA = new int[sizeA];
            for (int i = 0; i < arrayA.Length; i++)
            {
                arrayA[i] = Convert.ToInt32(Console.ReadLine());
            }

            // 输入数组B
            Console.WriteLine("size of B?");
            int sizeB = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Value of B:");
            int[] arrayB = new int[sizeB];
            for (int i = 0; i < arrayB.Length; i++)
            {
                arrayB[i] = Convert.ToInt32(Console.ReadLine());
            }

            // 计算并集
            int[] union = arrayA.Union(arrayB).ToArray();
            Console.WriteLine("并集(A∪B):");
            Console.WriteLine($"{{{string.Join(", ", union)}}}");

            // 计算交集
            int[] intersection = arrayA.Intersect(arrayB).ToArray();
            Console.WriteLine("交集(A∩B):");
            Console.WriteLine($"{{{string.Join(", ", intersection)}}}");

            // 计算差集(A-B)
            int[] difference = arrayA.Except(arrayB).ToArray();
            Console.WriteLine("差集(A-B):");
            Console.WriteLine($"{{{string.Join(", ", difference)}}}");

            Console.ReadLine();
        }
    }
}

无Linq的手动实现方案

如果不想依赖Linq,可手动实现集合操作:

手动实现并集

static int[] Union(int[] a, int[] b)
{
    HashSet<int> uniqueSet = new HashSet<int>();
    foreach (int num in a) uniqueSet.Add(num);
    foreach (int num in b) uniqueSet.Add(num);
    return uniqueSet.ToArray();
}

手动实现交集

static int[] Intersection(int[] a, int[] b)
{
    HashSet<int> setB = new HashSet<int>(b);
    HashSet<int> resultSet = new HashSet<int>();
    foreach (int num in a)
    {
        if (setB.Contains(num)) resultSet.Add(num);
    }
    return resultSet.ToArray();
}

手动实现差集(A-B)

static int[] Difference(int[] a, int[] b)
{
    HashSet<int> setB = new HashSet<int>(b);
    HashSet<int> resultSet = new HashSet<int>();
    foreach (int num in a)
    {
        if (!setB.Contains(num)) resultSet.Add(num);
    }
    return resultSet.ToArray();
}

内容的提问来源于stack exchange,提问作者daniell e

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:50:34