A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 大虾挂了 中级黑马   /  2013-9-13 19:31  /  4546 人查看  /  21 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 大虾挂了 于 2013-9-24 23:20 编辑

我的意思并不是新建一个数组存储这个结果,我要真正的改变这个数组(主要是长度),要怎么做呢?

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

21 个回复

倒序浏览
先转换成集合  用集合的remove方法移除一个元素  再把这个集合转换成数组就行了   因为数组是固定长度  集合没有固定   不懂集合的话  看看百度就明白了  
回复 使用道具 举报
陈行 发表于 2013-9-13 19:35
先转换成集合  用集合的remove方法移除一个元素  再把这个集合转换成数组就行了   因为数组是固定长度  集 ...

哦,数组定义以后长度是没法改变的是么,集合懂一点,视频里有说,是List<集合类型> 变量名=new List<集合类型>()吧
回复 使用道具 举报
程序里没有改变数组的方法的,数组的长度是没法改变的,但是可以把数组转化为list然后通过list.add方法改变长度。当然还可以自己写方法改变。
回复 使用道具 举报
数组在定义的时候就要给定长度的,是不能改的哦 如果是通过集合的话那就另说了~

PS  为啥回复要 要验证问题 还要验证码~
回复 使用道具 举报
数组一旦声明是没有办法改变长度的,想要删除其中元素,并改变数组长度只能把值赋给一个新数组,比如一个int数组含有1,2,3,4,5五个元素,想删除掉3,并改变长度,只能赋给一个新的数组

  1.             int[] array = new int[] { 1, 2, 3, 4, 5 };
  2.             int[] arr = new int[array.Length - 1];
  3.             int k = 0;
  4.             for (int i = 0; i < array.Length; i++)
  5.             {               
  6.                 if (array[i] == 3)
  7.                 {
  8.                     k = 1;
  9.                     continue;
  10.                 }
  11.                 if (k == 0)
  12.                     arr[i] = array[i];
  13.                 if (k == 1)
  14.                     arr[i-1] = array[i ];
  15.             }
  16.             foreach (int i in arr)
  17.             {
  18.                 Console.WriteLine(i);
  19.             }
  20.             Console.ReadKey();
复制代码

评分

参与人数 1技术分 +1 收起 理由
黑马-吕老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 念念念念_、 于 2013-9-22 17:44 编辑
  1. int[] a=new int[4]{1,2,3,4};      //声明一个数组并且初始化
  2. for (int i = 0; i < a.Length;i++ )  //输出
  3. {
  4. Console.Write(a[i]);
  5. }
  6. Console.WriteLine('\n');     //换行
  7. List<int> list = a.ToList();    //将数组的值赋给一个集合
  8. list.Remove(1);                  //在集合中移除第一个元素
  9. foreach(int l in list)
  10. {
  11. Console.WriteLine(l);         //输出移除后的元素
  12. }
  13. Console.ReadKey();
复制代码
这个是我的方法,有不足之处请指教

评分

参与人数 1技术分 +1 收起 理由
黑马-吕老师 + 1 之列代码是很不好的哦,可以加上简单的注释.

查看全部评分

回复 使用道具 举报
淡忘回忆 发表于 2013-9-14 15:09
数组一旦声明是没有办法改变长度的,想要删除其中元素,并改变数组长度只能把值赋给一个新数组,比如一个in ...

如果不能改变数组长度就没办法了,有一道题我想要建立一个循环,每次循环的时候都将数组中的元素随即删除一个,将删除这个数组变为元素后的数组(现在知道这是不可能的了,至少新数组长度没变)。由于这个循环要进行好多次,所以循环一次要一个新数组,单不说这样浪费空间,而且我到现在也没想到这怎么写代码,假设需要50个长度分别为1-50的数组,怎么让循环知道每次选择的是哪个数组,数组名字又不能定义成带变量吧,难道可以把50个数组再放入一个数组么?可以的话起50个名字也是个问题
回复 使用道具 举报
念念念念_、 发表于 2013-9-14 16:17
这个是我的方法,有不足之处请指教

用的是集合的方法啊,我之前还不是很了解这个东西(好吧,其实现在也不怎么了解)。其实当时做一道题的时候不知道集合,如果知道集合的话就没必要想数组了,直接用集合解决问题了。
回复 使用道具 举报
static void Main(string[] args)
        {
            int[] myArr = { 11, 22, 33 ,44,55};
            Console.WriteLine("数组初始值:");
            PrintArrayValues(myArr);
            Array.Resize(ref myArr, myArr.Length + 2);
            Console.WriteLine("调整为较大的长度后的值:");
            PrintArrayValues(myArr);
            Array.Resize(ref myArr, 2);
            Console.WriteLine("调整为较小的长度后的值:");
            PrintArrayValues(myArr);
            Console.ReadLine();
        }
        public static void PrintArrayValues(int[] myArr)
        {
            for (int i = 0; i < myArr.Length; i++)
            {
                Console.WriteLine("[{0}]:{1}", i, myArr[i]);
            }
        }

通过数组的resize方法就可以动态的调整以定义好的数组长度,不需要转换为集合的方式再来改变!这种方便是Array本身提供的方法!
回复 使用道具 举报
┾——黑马 发表于 2013-9-14 19:34
static void Main(string[] args)
        {
            int[] myArr = { 11, 22, 33 ,44,55};

这样啊,受教了,现在手头没有VS,想问一下,这样增加数组长度是不是在数组后面补0?减少数组元素是删除了数组最后一个元素么(如果是这样就好了)
回复 使用道具 举报
大虾挂了 发表于 2013-9-14 19:39
这样啊,受教了,现在手头没有VS,想问一下,这样增加数组长度是不是在数组后面补0?减少数组元素是删除 ...

是的!没有受不受教的,大家一起努力分享嘛!{:soso_e181:}
回复 使用道具 举报
给分啊!我说的不对吗?
回复 使用道具 举报
┾——黑马 发表于 2013-9-15 10:35
给分啊!我说的不对吗?

不要管我要啊,我说的不算的,~~~~(>_<)~~~~ {:soso_e149:}
回复 使用道具 举报
大虾挂了 发表于 2013-9-15 15:23
不要管我要啊,我说的不算的,~~~~(>_

你帮问题标记为已解决,版主就会给我加分了!兄弟来分不容易啊...{:soso_e150:}
回复 使用道具 举报
给个例子吧,希望对你有所帮助
double[] arr = new double[50];

List<double> list = arr.ToList();

list.RemoveAt(5+1);

double[] newarr = list.ToArray();
回复 使用道具 举报
┾——黑马 发表于 2013-9-22 10:18
你帮问题标记为已解决,版主就会给我加分了!兄弟来分不容易啊...
...

怎么改啊,话说吕老师给你分咯
回复 使用道具 举报
大虾挂了 发表于 2013-9-22 19:56
怎么改啊,话说吕老师给你分咯

嗯嗯,上午给的,以后都要改了!
回复 使用道具 举报
string   []   arr   =   {   "abc1 ",   "abc2 ",   "abc3 ",   };
        ArrayList   al     =   new   ArrayList(arr);
        al.RemoveAt(1);
用removeat

不足之处请多多指教
回复 使用道具 举报
楼主您好:如果问题已经解决,请将帖子编辑为【已解决】。谢谢!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马