首页 新闻 会员 周边

int数组去重

0
[已解决问题] 解决于 2022-07-12 09:41

//1、实现int 数组去重 (获得一个新数组不重复的元素)
int[] arr=new int[] { 1, 1, 2, 3, 4, 5, 6, 5 };
int[] arrs=new int[] { };

        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length; j++)
            {
                if (arr[i]==arr[j]) {
                    var a=arrs.push();//报错代码
                }
            }
        }

以上代码在VS202软件中的控制台应用程序中执行

宋人鱼的主页 宋人鱼 | 初学一级 | 园豆:14
提问于:2022-07-09 15:04
< >
分享
最佳答案
0

你这基础一点都不行,需要把 C# 类型概念补补,但看你问问题比较诚恳,我给出两种方式:

  1. 最偷懒的方式,使用System.Linq
    如果你在文件开头写了using System.Linq;,你就可以使用Linq,至于什么是Linq可以自行百度科普,代码如下:
using System;
using System.Linq;

namespace test
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int[] arr = { 1, 1, 2, 3, 4, 5, 6, 5 };
            var a = arr.Distinct();    //该函数可以去重,返回非重复集合
            foreach(var item in a)
            {
                Console.WriteLine(item);
            }
            Console.Read();
        }
    }
}
  1. 如果你想自己手动写,也不是不可以:
using System;
using System.Collections.Generic;

namespace test
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int[] arr = { 1, 1, 2, 3, 4, 5, 6, 5 };
            List<int> a = new List<int>();
            foreach(var item in arr)
            {
                if (a.Contains(item))
                    continue;
                a.Add(item);
            }

            foreach (var item in a)
            {
                Console.WriteLine(item);
            }
            Console.Read();
        }
    }
}

还有,你貌似把C/C++C#混在一块了,他们两个只是语法稍微像一点,本质上完全不一样。CC++虽然不是同一种语言,但C++有些东西是兼容C的。

奖励园豆:5
寂静的羽夏 | 小虾三级 |园豆:1803 | 2022-07-09 19:57

好的,我已经写出来了,但你发的比我写的要简便多了。
Linq的语法我以为只能用来查询数据库中的内容,没有深入了解。
还有谢谢解答我的疑惑。

宋人鱼 | 园豆:14 (初学一级) | 2022-07-12 09:41
其他回答(3)
0

报啥错啊???
是不是因为arrs这个数组没有初始化数组大小

飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-09 15:08

报错
代码:CS1061
说明:int[]未包含push的定义,并且找不到可接受第一个int[]类型参数的可访问扩展方法push(是否缺少using指令或程序集引用)

支持(0) 反对(0) 宋人鱼 | 园豆:14 (初学一级) | 2022-07-09 15:34

@宋人鱼:
C#? 没用过。。。
你可以试试这样行不行?

int[] arr=new int[] { 1, 1, 2, 3, 4, 5, 6, 5 };
int[] arrs=new int[arr.Length];
int index = 0;
for (int i = 0; i < arr.Length; i++)
{
      for (int j = 0; j < arr.Length; j++)
      {
           if (arr[i]==arr[j]) {
              arrs[index] = arr[i];//用索引给数组赋值
              index++;
           }
       }
 }
支持(0) 反对(0) 飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-09 15:49

@飒沓流星: 这样不行啊,我循环了arrs数组中的数据,输出不出来

支持(0) 反对(0) 宋人鱼 | 园豆:14 (初学一级) | 2022-07-09 16:07

@宋人鱼:
抱歉,那就不知道了,C#我不太会

支持(0) 反对(0) 飒沓流星 | 园豆:1099 (小虾三级) | 2022-07-09 17:31

@飒沓流星: 没事的,每个人都有擅长的领域,不可能全能。还有谢谢你的回答。

支持(0) 反对(0) 宋人鱼 | 园豆:14 (初学一级) | 2022-07-09 17:33
0

lamda表达式就能实现吧 你了解一下

智客工坊 | 园豆:1855 (小虾三级) | 2022-07-11 12:47

好的,知道了

支持(0) 反对(0) 宋人鱼 | 园豆:14 (初学一级) | 2022-07-12 09:34
0

数组要么初始化,要么给大小,你这不给,肯定报错啊,要么就不要用数组,就List

echo_lovely | 园豆:1437 (小虾三级) | 2022-07-12 09:08

好的,知道了

支持(0) 反对(0) 宋人鱼 | 园豆:14 (初学一级) | 2022-07-12 09:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册