【问题标题】:getting results using foreach in c#在 c# 中使用 foreach 获取结果
【发布时间】:2017-03-13 12:37:10
【问题描述】:
//START OF WORKING PART//
var sizeds = 21;
var xarrayds = new int[sizeds];
var x = new double[sizeds];

for (int i = 0; i < sizeds; i++)
{
     xarrayds[i] = i;
     x[i] = xPT / 20 * xarrayds[i];
}
MessageBox.Show(x[5].ToString());
//END OF WORKING PART//

//START OF NOT WORKING PART//
double xstar;
double[] xoverhdarray = new double[] {-5, -4, -3};
foreach (double xoverhd in xoverhdarray)
{
    xstar = (xoverhd + 0.5) * 2;

    MessageBox.Show(xstar{-5}.ToString()); 
    //CAN'T FIND CORRECT SYNTAX ON THIS LINE
}
//NOT WORKING PART//

正如你在上面看到的,在工作部分我得到了 x[5] 的结果。我想在第二部分做同样的事情。我找不到正确的语法。我只想在 xoverhd 为 -5 时得到 xstar 变量的结果

我应该如何编写那行代码?我希望输出为 (-5 + 0.5) * 2 = -9。

编辑:我猜不可能在 foreach 之外得到结果。

double xstar;
double[] xoverhdarray = new double[] {-5, -4, -3};
foreach (double xoverhd in xoverhdarray)
{
    xstar = (xoverhd + 0.5) * 2;
}
 MessageBox.Show(xstar{-5}.ToString()); 

猜这是无效的。

【问题讨论】:

  • 缩进和变量名的结构方式意味着我跟不上...
  • 不是很清楚你要达到什么目的,
  • 我会尽量简化我的问题。只需一秒钟。
  • 你想要这个吗? 字符串消息 = $"({xoverhdarray[xoverhd ]} + 0.5) * 2 = {xstar} "; MessageBox.Show(message);
  • 我希望你也知道这两个循环做不同的事情——第一个循环用值填充两个数组,循环完成后你从其中一个数组中获取第六个值作为消息盒子。第二个遍历一个数组并计算一个存储在xstar 中的值(每次迭代都会被覆盖)——这就是为什么没人知道你真正想要做什么

标签: c# foreach


【解决方案1】:

也许把它放在If语句中,你就会得到你的结果。

 if(xoverhd == -5)
      MessageBox.Show(xstar.ToString());

【讨论】:

  • if 语句对我不起作用,因为我会得到数组中每个值的结果。
  • 我坚持要检查每个值,但只写出一个,其中 xoverhd==-5。这样,您只需在 xoverhd==-5 的 messageBox 中写出值。
【解决方案2】:
static void Main(string[] args)
{

    double xstar;
    double[] xoverhdarray = new double[] { -5, -4, -3 };
    double userChoice = -5;

    foreach (double xoverhd in xoverhdarray)
    {
        xstar = (xoverhd + 0.5) * 2;

        if (xoverhd == userChoice)
        {
            MessageBox.Show(xstar.ToString()); //Outputs result of calculation
        }
    }
}

【讨论】:

  • 当我启动程序时,它会依次显示 3 个不同的输出。 (因为我在数组中有 3 个变量)我不需要查看所有变量。我需要看看其中之一。例如 xoverhd= -4。
  • 所以你只想从数组中输出一个变量?你如何选择你想要的那一款?如果要检索 -4 的输出,是否要使用 xstar[-4].ToString() 选择它?
  • 我编辑了我的答案以匹配我认为你想要的。您必须获取用户的选择并将其存储(在诸如userChoice 之类的变量中),然后将数组中的值与用户的选择进行比较。如果它们匹配,则输出该特定结果。
  • 是的,完全正确。但是当我这样写时,我收到错误“无法使用 [] 将索引应用于'double'类型的表达式”
  • 如果您尝试在数组中查找特定值,请使用我在上面编辑的答案中所做的方式。如果您尝试执行xstar[-5],它正在寻找不存在的索引-5,因为您的数组从0-2(三个元素)开始。您需要将里面的值与用户输入进行比较才能找到您想要的。
【解决方案3】:

这样做:

//START OF NOT WORKING PART//
double xstar;
double[] xoverhdarray = new double[] { -5, -4, -3 };
foreach (double xoverhd in xoverhdarray)
{
    if (xoverhd == -5)
    {
        xstar = (xoverhd + 0.5) * 2;
        MessageBox.Show(xstar.ToString());
    }
}
//NOT WORKING PART//

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 2014-05-06
    • 2014-10-02
    • 2012-11-11
    • 2020-08-28
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多