这是我的代码。到目前为止,这是可行的,但我需要使其处于循环状态,因此我不必继续重复执行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;
}
答案 0 :(得分:2)
如果您创建一个在所有条目上循环的外循环,然后在您在外循环中查看一个条目之后在一个内循环上循环这些条目,则可以执行以下操作
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
答案 1 :(得分:0)
缩短代码的一种可能方法。
您可以迭代数组,然后将第一个项目与其余项目进行比较,如问题代码块中所述。无需访问单个数组元素。
将第一个元素与其余元素进行比较
static void Main(string[] args)
{
int result;
string[] array = { "abcw", "baz", "foo", "bar", "xtfn", "abcdef" };
for (int i = 0; i < array.Length - 2; i++)
{
result = array[0].Length * array[i + 1].Length;
if (result == 16)
{
Console.WriteLine(array[0] + " * " + array[i+1] + " = " + result);
break;
}
}
Console.ReadLine();
}
比较两者之间的所有元素
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);
答案 2 :(得分:0)
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);
}
}
}