有没有办法知道通过if语句传递了什么

时间:2013-06-29 01:24:17

标签: c#

我的问题是,我现在需要通过If语句传递什么语句。代码如下。

int[] Array = {value1,value2,value3}
foreach {int Value in Array)
{
if (Value < 4)
{
    // Here i need to know what values passed through that were less that 4, like    
    // which one, value 1, value 2, and/or value 3
}

那么有问题的解决方案吗?我对编程很陌生。 我的问题是我不需要其他声明,我需要知道值1或2或3是否通过。究竟是哪些小于4.编辑:修正了一些错误,匆忙,忘了把标志放在另一边。当它们小于4时,我现在需要通过哪些值。生病的重新发布。当我搞砸了。我现在真的不在乎哪些更大,或者说其他声明,我跳过那一部分。 编辑2:我也提出了一个解决方案,但如果它的好,我就不会。当我在if语句中存储值时,我应该运行一个循环,制作另一个if语句,以比较if语句中的那些是否在外部相同,然后知道传递了哪些值?

5 个答案:

答案 0 :(得分:2)

如果我理解这个问题,我不会100%肯定,但似乎你可以使用else声明

if (Value > 4)
{
 // Do your stuff for elements greater than 4
}
else
{
 // Do your stuff for elements greater lower or equal than 4
}

答案 1 :(得分:1)

如果使用for而不是foreach,因为你有数组成员的索引,你就会知道哪个通过了

int[] array = {value1, value2, value3}
for (int index = 0; index < array.Count(); index++)
{
    if (array[index] < 4)
    {
        // do sth with index
    }
}

答案 2 :(得分:0)

int Array[] = {value1,value2,value3}
foreach {int Value in Array)
{
if (Value > 4)
{
    // Here i need to know what elements passed through that were less that 4
}else if(Value < 4){
  //values < 4 will execute this code
}

答案 3 :(得分:0)

我将提出一些希望有用的一般性建议。首先,您的条件是if (Value > 4),因此您不会进入代码块,您建议确定哪些元素小于4.而不是您需要else。所以这是一种方式;

int Array[] = {value1,value2,value3}
List<int> lessThanFour = new List<int>();
foreach {int Value in Array)
{
    if (Value < 4)
    {
        lessThanFour.Add(Value);
        Console.WriteLine(Value);
    }
}

上面的代码将每个小于4的值放入一个列表中,以便稍后访问它们。它还将它们打印到控制台。

另一种选择是使用LINQ;

var lessThanFour = Array.Where(x => x < 4);
foreach (int c in lessThanFor)
    Console.WriteLine(c);

上面的代码使用Where运算符创建一个新数组,其中包含原始值小于for的所有整数。语句x => x < 4最好在迭代中考虑,因为x是当前元素。它的工作方式与foreach循环相同。当你执行该代码时,它基本上说,对于Array中的每个int x,如果x小于4,则将其添加到结果中。然后我使用下面的foreach打印出结果。

答案 4 :(得分:0)

我认为你的问题框架很差,但听起来你正在寻找一个转换案例。

if (x < 4) {
   switch (x) {

       case 1: 
           Console.WriteLine("Case 1");
           break;

       case 2:
           Console.WriteLine("Case 2");
           break;

       case 3:
           Console.WriteLine("Case 3");
           break;

       default:
           Console.WriteLine("Default case");
           break;
    }
}