比较两个int数组
本文关键字:两个 int 数组 比较 | 更新日期: 2023-09-27 18:27:57
我写了这个代码:
class Program
{
static void Main(string[] args)
{
Test t = new Test();
int[] tal1 = { 3, 2, 3};
int[] tal2 = { 1, 2, 3};
Console.WriteLine(t.theSameInBoth(tal1,tal2));
}
}
class Test
{
public Boolean theSameInBoth(int[] a, int[] b)
{
bool check = false;
if (a.Length == b.Length)
{
for (int i = 0; i < a.Length; i++)
if (a[i].Equals(b[i]))
{
check = true;
return check;
}
}
return check;
}
}
所以这里的交易是。我需要发送两个数组,其中包含数字。然后我需要检查数组。如果数组中的所有数字都相同。我需要将我的check设置为true并返回它。唯一的问题是。使用我在这里设置的代码,我发送了一个3,2,3的数组和一个1,2,三的数组,它仍然返回check为true。
我是这方面的新手,所以我希望这里的任何人都能帮助我!
您需要反转测试:
class Test
{
public bool theSameInBoth(int[] a, int[] b)
{
if (a.Length == b.Length)
{
for (int i = 0; i < a.Length; i++)
{
if (a[i] != b[i])
{
return false;
}
}
return true;
}
return false;
}
}
只要一对项目不同,两个数组就不同。
在您的代码中,您实际上说过,只要一对项相等,两个数组就相等。
一旦找到第一个匹配项,就会返回。你需要这样的东西:
bool check = true;
if (a.Length == b.Length)
{
for (int i = 0; i < a.Length; i++)
{
if (!a[i].Equals(b[i]))
{
check = false;
break;
}
}
return check;
}
else
return false;
bool isIndentical = true;
if (a.Length == b.Length)
{
for (int i = 0; i < a.Length; i++)
if (!a[i].Equals(b[i]))
{
isIndentical = false;
return check;
}
}
return isIndetical;
这样试试吧。您的代码总是返回true
,因为如果数组中的一个元素相等,则if
语句中的代码将返回true
。在我的情况下,我正在检查是否不相等,如果发生这种情况,只返回false
。请注意,我使用了其他变量,使其更加清晰,并在乞求中实现。
我的习惯是添加Linq解决方案:
public bool IsSame(int[] a, int[] b)
{
return a.Length == b.Length &&
a.Select((num, index) => num == b[index]).All(b => b);
}
另一个很酷的Linq方法:
public bool IsSame(int[] a, int[] b)
{
return a.Length == b.Length &&
Enumerable.Range(0, a.Length).All(i => a[i] == b[i]);
}