C# 如何将if-else语句放入循环中

C# 如何将if-else语句放入循环中,c#,C#,这是我的密码。到目前为止,这是可行的,但我需要它在一个循环中,所以我不会一直重复if-else语句 static void Main(string[] args) { int i, j, k, l, m, n; int result; string [] array = { "abcw", "baz", "foo", "bar", "xtfn", "abcdef" }; i = arr

这是我的密码。到目前为止,这是可行的,但我需要它在一个循环中,所以我不会一直重复if-else语句

static void Main(string[] args)
        {
            int i, j, k, l, m, n;
            int result;
            string [] array = { "abcw", "baz", "foo", "bar", "xtfn", "abcdef" };
            i = array[0].Length;
            j = array[1].Length;
            k = array[2].Length; 
            l = array[3].Length;
            m = array[4].Length;
            n = array[5].Length;
            result = i * j;
            if (result == 16) 
            {
                Console.WriteLine(result);
            }
            else
            {
                result = i * k;
            }
            if (result == 16)
            {
                Console.WriteLine(result);
            }
            else
            {
                result = i * l;
            }
            if (result == 16)
            {
                Console.WriteLine(result);
            }
            else
            {
                result = i * m;
            }
            if (result == 16)
            {
                Console.WriteLine(array[0]+" * "+array[4]+" = "+result);
            }
            else
            {
                result = i * n;
            }

缩短代码的可能方法之一

您可以迭代数组,并将第一项和问题代码块中提到的其他项进行比较。无需访问单个数组元素

将第一个元素与其他元素进行比较

比较两者之间的所有元素


如果您创建一个在所有条目上循环的外部循环,然后创建一个在外部循环中查看的条目之后在条目上循环的内部循环,您可以执行类似的操作

      string[] array = {"abcw", "baz", "foo", "bar", "xtfn", "abcdef"};
      for (var i = 0; i < array.Length; i++)
      {
          for (var j = i + 1; j < array.Length; j++)
          {
              if (array[i].Length * array[j].Length == 16)
              {
                  Console.WriteLine($"{array[i]} {array[j]}");
              }
          }
      }

然后得到的结果是abcw xtfn

欢迎来到stackoverflow。请花一分钟的时间,特别是。欢迎来到stackoverflow。请花一分钟的时间,特别是如何做,并相应地回答你的问题。它是否会一直传到m*n?是的,请回答。根据此代码,你的目标是什么?如果有结果=16那么你的预期结果是什么?如果是!=16它应该只返回0您的解决方案正在工作。我认为不需要两个循环。可以在单循环中实现。请参阅我对您的解决方案的答复。最好检查此解决方案的9或24,而不是16,这样您才能真正了解解决方案是否正确。但是,通过阅读它,它似乎是正确的。这只是因为解决方案中的一个元素是第一个元素。如果交换前2个元素,使数组变成baz、abcw、foo、bar、xtfn、abcdef,那么它就找不到它。@HansKilian我更正了它。谢谢你的关注!非常感谢你。但是,如果第一个字符串*其他字符串没有得到答案,我希望它移动到第二个字符串*其他字符串,然后继续,直到得到答案found@AbolarinAnuoluwapo我更新了我的答案。检查零件之间的比较所有元素。“你想怎么做都行。”高朗·戴夫,非常感谢。。它已经起作用了,但是如果我想过滤字符串数组并在执行操作之前删除其中包含相同字符的字符串,该怎么办
for (var i = 0; i < array.Length; i++)
    for (var j = i + 1; j < array.Length; j++)
        if (array[i].Length * array[j].Length == 16)
            Console.WriteLine(array[i] + " * " + array[j] + " = " + array[i].Length * array[j].Length);
      string[] array = {"abcw", "baz", "foo", "bar", "xtfn", "abcdef"};
      for (var i = 0; i < array.Length; i++)
      {
          for (var j = i + 1; j < array.Length; j++)
          {
              if (array[i].Length * array[j].Length == 16)
              {
                  Console.WriteLine($"{array[i]} {array[j]}");
              }
          }
      }
string[] array = { "abcw", "baz", "foo", "bar", "xtfn", "abcdef" };
        int result = 16;
        for (var i = 0; i < array.Length; i++) {
            int x = array[i].Length;
            if (result % x != 0) {
                continue;
            }
            for (var j = i + 1; j < array.Length; j++) {
                if (x * array[j].Length == result) {
                    Console.WriteLine(array[i] + "*" + array[j] + "= " + result);
                }
            }
        }