首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#如何将列表数字减为变量,直到达到x <= 0为止?

C#如何将列表数字减为变量,直到达到x <= 0为止?
EN

Stack Overflow用户
提问于 2016-01-14 03:45:16
回答 3查看 2.2K关注 0票数 0

这个程序试图将列表的内容减去变量' health ',假设健康的值是物体中的生命力的数量,列表中的每一个数字都是一种破坏性的力量,我试图得到健康<= 0的指数。例如,=2-1.1= .9,因为.9 != <=0,请继续减去.

代码语言:javascript
复制
    var wqat = 1.1;
    var rat = .2;
    var eat = .8;
    var baat = 1.2;

    var health = 2;


    List<double> theOneList = new List<double>();
    List<double> theOneList = new List<double>();

    theOneList.Add(wqat);
    theOneList.Add(rat);
    theOneList.Add(eat);
    theOneList.Add(baat);




    for (int i = 0; i < 4; i++)
    {
        test.Add(health - theOneList[i]);

        Console.WriteLine(test[i]);
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-14 04:10:53

另一种简单的方法是使用Linq语句。

代码语言:javascript
复制
var heathRemaining = theOneList.TakeWhile(c=> (health-=c) >=0.0);

工作小提琴演示

票数 2
EN

Stack Overflow用户

发布于 2016-01-14 03:48:38

使用while循环来代替:

代码语言:javascript
复制
int i = 0;
while(health > 0 && i < theOneList.length){
   // keep subtracting
   test.add(health - theOneList[i]);
   Console.WriteLine(test[i]);
   i++;
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-14 03:49:34

您可以在for循环中使用一个简单的条件来完成此操作。

代码语言:javascript
复制
int i = 0;

for(i = 0; i < theoneList.Length && health > 0; i++)
{
    health -= theOneList[i];
}

Console.WriteLine(i);

首先,您并不想硬编码迭代器的上限值。在循环条件中使用.Length使您能够迭代完整的列表。

它的工作方式是,它将继续从健康列表中减去值,直到健康不超过零为止。这将中断循环,使使运行状态低于零的值的位置与i值相同。

另外,如果您只关心列表中的值将健康状态降到0或更少,那么就不需要将健康值推入列表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34781372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档