CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

请问如何去除一个数组中的重复项?谢谢

楼主kwxx(东京大屠杀万岁!)2005-08-02 16:45:25 在 VB / 基础类 提问

比如定义一个数组  
  Dim   a(10)   as   Long  
  For   i   =   1   to   5  
          a   (i)   =   1  
  Next   i  
  For   i   =   6   to   10  
          a   (i)   =   2  
  Next   i  
  于是数组a的元素有五个1五个2,现在希望只保留两个元素,一个1一个2,请问如何实现? 问题点数:100、回复次数:7Top

1 楼crycoming(瞎编)回复于 2005-08-02 16:56:47 得分 30

Function   Distinct(a()   As   String)   As   String()  
          Dim   i   As   Long  
          Dim   ii   As   Long  
          Dim   b()   As   String  
          Dim   bExist   As   Boolean  
           
          ReDim   b(0)   As   String  
           
          For   i   =   LBound(a)   To   UBound(a)  
                  bExist   =   False  
                  For   ii   =   LBound(a)   To   UBound(a)  
                          If   b(ii)   =   a(i)   Then   bExist   =   True:   Exit   For  
                  Next  
                  If   bExist   =   False   Then  
                          ReDim   Preserve   b(UBound(b)   +   1)   As   String  
                          b(UBound(b))   =   a(i)  
                  End   If  
          Next  
          Distinct   =   b  
  End   Function  
  Top

2 楼crycoming(瞎编)回复于 2005-08-02 16:58:35 得分 0

把string   该成Long   看错了Top

3 楼crycoming(瞎编)回复于 2005-08-02 17:01:23 得分 0

返回值中的数组(0)是无效的  
  Function   Distinct(a()   As   Long)   As   Long()  
          Dim   i   As   Long  
          Dim   ii   As   Long  
          Dim   b()   As   Long  
          Dim   bExist   As   Boolean  
           
          ReDim   b(0)   As   Long  
           
          For   i   =   LBound(a)   To   UBound(a)  
                  bExist   =   False  
                  For   ii   =   LBound(b)   To   UBound(b)  
                          If   b(ii)   =   a(i)   Then   bExist   =   True:   Exit   For  
                  Next  
                  If   bExist   =   False   Then  
                          ReDim   Preserve   b(UBound(b)   +   1)   As   Long  
                          b(UBound(b))   =   a(i)  
                  End   If  
          Next  
          Distinct   =   b  
  End   FunctionTop

4 楼sdrcxzy(大向)回复于 2005-08-02 17:03:23 得分 10

for   i   =1   to   k    
        for   j   =i+1   to   k-1  
          if   a(i)=a(j)   then  
            for   m=j+1   to   k    
              a(m-1)=a(m)  
            next   m  
          k=k-1  
          endif  
        next   j  
  next   i  
  a(1)……a(k)  
  没调试过,自己改改。不是很懂vb  
  Top

5 楼DooDu(杜霖:I want,I can(开关拉))回复于 2005-08-02 17:04:12 得分 30

再开辟一个数组,记录存在的项,如果重复,不记录Top

6 楼hot1kang1(网站制作,系统开发,记得-http://3q2008.Com)回复于 2005-08-02 17:21:33 得分 0

DooDu(杜霖:I   want,I   can.(MmMVP马甲)(准备闭关……))   (   )   信誉:100    
   
  方法好Top

7 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2005-08-02 17:34:13 得分 30

创建一个collection,然后把数组中的数作为key往里面加,因为key不能重复。所以如果有重复的加入会出错,你用一个on   error   resume   next继续,最后出来的collection里面就是不重复的全部数字了。Top

相关问题

  • 一个数组,怎样去掉数组里面重复的项?
  • 如何消除数组中重复项
  • 关于去除字符串数组中重复元素的程序
  • 如何编写有重复项串数组的快速排序,不用qsort
  • 去掉数组中的重复值
  • 怎么去数组的重复值!(急!)
  • 把数组里重复数字去掉
  • 如何去除listview中的重复数据项?
  • 求助:如何去除dropdownlist的重复项
  • 如何在一个数组中找到不重复的数?

关键词

  • 数组
  • bexist
  • ubound
  • 重复
  • lbound
  • redim
  • distinct
  • dim
  • next
  • long

得分解答快速导航

  • 帖主:kwxx
  • crycoming
  • sdrcxzy
  • DooDu
  • TechnoFantasy

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo