首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用foreach定义变量

使用foreach定义变量
EN

Stack Overflow用户
提问于 2017-03-06 22:17:23
回答 3查看 121关注 0票数 0
代码语言:javascript
运行
复制
int[] xarray = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
foreach (int x in xarray)
{
    double x[] = xPT / 20 * [];
    double z[] = Math.Pow(x[] / Hd , 1.85) / 2 * Hd);
}

        /* My previous code was;
        x0 = xPT / 20 * 0;
        x1 = xPT / 20 * 1;
        x2 = xPT / 20 * 2;
        x3 = xPT / 20 * 3;
        x4 = xPT / 20 * 4;
        x5 = xPT / 20 * 5;
        x6 = xPT / 20 * 6;
        x7 = xPT / 20 * 7;
        x8 = xPT / 20 * 8;
        x9 = xPT / 20 * 9;
        x10 = xPT / 20 * 10;
        x11 = xPT / 20 * 11;
        x12 = xPT / 20 * 12;
        x13 = xPT / 20 * 13;
        x14 = xPT / 20 * 14;
        x15 = xPT / 20 * 15;
        x16 = xPT / 20 * 16;
        x17 = xPT / 20 * 17;
        x18 = xPT / 20 * 18;
        x19 = xPT / 20 * 19;
        x20 = xPT / 20 * 20;
        z0 = Math.Pow(x0 / Hd, 1.85) / 2 * Hd;
        z1 = Math.Pow(x1 / Hd, 1.85) / 2 * Hd;
        z2 = Math.Pow(x2 / Hd, 1.85) / 2 * Hd;
        z3 = Math.Pow(x3 / Hd, 1.85) / 2 * Hd;
        z4 = Math.Pow(x4 / Hd, 1.85) / 2 * Hd;
        z5 = Math.Pow(x5 / Hd, 1.85) / 2 * Hd;
        z6 = Math.Pow(x6 / Hd, 1.85) / 2 * Hd;
        z7 = Math.Pow(x7 / Hd, 1.85) / 2 * Hd;
        z8 = Math.Pow(x8 / Hd, 1.85) / 2 * Hd;
        z9 = Math.Pow(x9 / Hd, 1.85) / 2 * Hd;
        z10 = Math.Pow(x10 / Hd, 1.85) / 2 * Hd;
        z11 = Math.Pow(x11 / Hd, 1.85) / 2 * Hd;
        z12 = Math.Pow(x12 / Hd, 1.85) / 2 * Hd;
        z13 = Math.Pow(x13 / Hd, 1.85) / 2 * Hd;
        z14 = Math.Pow(x14 / Hd, 1.85) / 2 * Hd;
        z15 = Math.Pow(x15 / Hd, 1.85) / 2 * Hd;
        z16 = Math.Pow(x16 / Hd, 1.85) / 2 * Hd;
        z17 = Math.Pow(x17 / Hd, 1.85) / 2 * Hd;
        z18 = Math.Pow(x18 / Hd, 1.85) / 2 * Hd;
        z19 = Math.Pow(x19 / Hd, 1.85) / 2 * Hd;
        z20 = Math.Pow(x20 / Hd, 1.85) / 2 * Hd;
         */

正如你在上面看到的,我之前的代码太长了。(上面只列出了两个项目,但我的代码中有更多。)我想在一行中定义变量。我觉得在堆栈溢出上问这些简单的问题很丢脸,但我在web上找不到正确的语法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-06 22:26:14

您还可以使用for循环来初始化xarray

代码语言:javascript
运行
复制
var size = 21;

var xarray = new int[size];
var x = new double[size];
var z = new double[size];

for (int i = 0; i < size; i++)
{
    xarray[i] = i;
    x[i] = xPT / 20 * xarray[i];
    z[i] = Math.Pow(x[i] / Hd, 1.85) / 2 * Hd;
}
票数 2
EN

Stack Overflow用户

发布于 2017-03-06 22:26:08

使用Linq实际上可以很容易地做到这一点。Enumerable.Range可以提供您想要的0-21值,然后只需使用Selectx值的每个值运行您的公式,然后使用第二个公式在x上执行另一个Select以获得z值。

代码语言:javascript
运行
复制
var x = Enumerable.Range(0,21).Select(i => xPT / 20.0 * i).ToList();
var z = x.Select(xi => Math.Pow(xi / Hd, 1.85) / 2.0 * Hd).ToList();

或者,如果您愿意,也可以使用ToArray

票数 3
EN

Stack Overflow用户

发布于 2017-03-06 22:24:04

您需要在循环之前声明两个数组。我建议使用普通的for循环。这将为您提供一个现成的索引变量,您可以使用该变量指向数组中的位置。此外,它还允许您设置数组的长度并避免数组索引,因为如果从i=0开始,则索引变量将遍历所有这些值,并以1 i++的步长递增,并在i<=20停止

代码语言:javascript
运行
复制
int finalNumber = 20;
double x[] = new double[finalNumber+1]  // +1 because you want to include the value 20
double z[] = new double[finalNumber+1]

for (int i = 0; i <= finalNumber; i++)
{
    x[i] = xPT / 20 * i;
    z[i] = Math.Pow(x[i] / Hd , 1.85) / 2 * Hd);
}

下面是for循环中的small introduction和索引变量的用法

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

https://stackoverflow.com/questions/42627887

复制
相关文章

相似问题

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