首页 新闻 会员 周边 捐助

定义属性List时,如何直接初始化

0
悬赏园豆:10 [已解决问题] 解决于 2014-05-12 16:15

Ex:

 1 class A
 2 {
 3   private List<double> u = new List<double>();
 4  
 5 
 6   privated void fun1(double x, double y)
 7   {
 8     for (int i=0;i<100;i++)
 9     {
10        u.add(0);
11     }
12     for (int i=0;i<100;i++)
13     {
14        u[i] = x + y*i;
15     }
16   }
17   public void fun2()
18   {
19     for (int i=0;i<100;i++)
20     {
21        fun1(i,i);
22     }
23   }
24  
25 
26 }

我想定义如上的代码,在调用fun2时,调用了fun1很多次,

这样fun1在其本身的定义里面

u.add(0)使得u不断在加大,

而我想让u的长度始终保持在100不变,

我是否能在定义属性

private List<double> u = new List<double>()

时直接对其进行初始化;如下

 1 public List<double> u = new List<double>()
 2 {
 3   for(int i=0;i<100;i++)
 4   {
 5     u.add(0);
 6   }
 7 }
 8  
 9 //////////////////////
10 privated void fun1(double x, double y)
11   {
12     for (int i=0;i<100;i++)
13     {
14        u[i] = x + y*i;
15     }
16   }
17   public void fun2()
18   {
19     for (int i=0;i<100;i++)
20     {
21        fun1(i,i);
22     }
23   }
24  
25 
26 }
c#
ZGHAPPY的主页 ZGHAPPY | 菜鸟二级 | 园豆:207
提问于:2014-05-09 10:36
< >
分享
最佳答案
1

你要是实在想固定它的长度不变,那你就写个方法,每ADD()一次,你就检查一次,要是list的长度超过了100,那就remove一个里面的元素,可以移除最开始的那个,也可以移除最后的一个,或者你指定的某一个,这样不就可以了?

收获园豆:7
龙泽清 | 初学一级 |园豆:172 | 2014-05-09 16:38
其他回答(4)
0

你想让他长度不变定义一个数组就行了

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-09 10:41
0


public List<double> u = new List<double>(100);

收获园豆:1
刘宏玺 | 园豆:14020 (专家六级) | 2014-05-09 10:51
1

这代码是有问题的嘛。

fun2()里循环100次就调用100 fun1();

但是你的fun1()里面循环给u[i]赋值。每次i都是从0到99

相当于fun2前面99次循环都是做无用功。最后一次循环就把前面的都覆盖了。

收获园豆:1
单恋 | 园豆:678 (小虾三级) | 2014-05-09 11:19

对啊,我是想在定义的时候固定其长度:

但其长度每次调用时不不一样,实现一种类似于:

for(int i=0;i<times;i++)

{

for(int j=0;j <count[i];j++)

fun();

u[j]=x+y;

}

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2014-05-09 11:28

@ZGHAPPY: List长度是根据你的add()次数来决定的。所以你还是把思路理一下,在修改一下代码。

支持(0) 反对(0) 单恋 | 园豆:678 (小虾三级) | 2014-05-09 11:31
0

public List<double> u = new List<double>(100);

上面只是指定List的初始容量,里面还是没有东西,直接用u[4]寻址的话,还是会报错

可以使用List的另一个构造函数,用数组作为容器来初始化它

public List<double> u = new List<double>(new double[100]);

紫小强 | 园豆:202 (菜鸟二级) | 2016-08-17 11:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册