【发布时间】:2020-12-21 14:48:50
【问题描述】:
我有一个 Perl 程序,它应该计算元素在数组中出现的次数,如果出现的次数是奇数,则打印出元素的值。
这是我的代码。
#!/usr/bin/perl
use strict;
use warnings;
sub FindOddCount($)
{
my @arraynumber = @_;
my $Even = 0;
my $i = 0;
my $j = 0;
my $array_length = scalar(@_);
for ($i = 0; $i <= $array_length; $i++)
{
my $IntCount = 0;
for ($j = 0; $j <= $array_length; $j++)
{
if ($arraynumber[$i] == $arraynumber[$j])
{
$IntCount++;
print($j);
}
}
$Even = $IntCount % 2;
if ($Even != 0)
{
return $arraynumber[$i];
}
}
if ($Even == 0)
{
return "none";
}
}
my @array1 = (1,1,2,2,3,3,4,4,5,5,6,7,7,7,7);
my @array2 = (10,10,7,7,6,6,2,2,3,3,4,4,5,5,6,7,7,7,7,10,10);
my @array3 = (6,6,10,7,7,6,6,2,2,3,3,4,4,5,5,6,7,7,7,7,10.10);
my @array4 = (10,10,7,7,2,2,3,3,4,4,5,5,7,7,7,7,10,10,6);
my @array5 = (6,6);
my @array6 = (1);
my $return_value1 = FindOddCount(@array1);
my $return_value2 = FindOddCount(@array2);
my $return_value3 = FindOddCount(@array3);
my $return_value4 = FindOddCount(@array4);
my $return_value5 = FindOddCount(@array5);
my $return_value6 = FindOddCount(@array6);
print "The Odd value for the first array is $return_value1\n";
print "The Odd value for the 2nd array is $return_value2\n ";
print "The Odd value for the 3rd array is $return_value3\n ";
print "The Odd value for the 4th array is $return_value4\n ";
print "The Odd value for the 5th array is $return_value5\n ";
print "The Odd value for the sixth array is $return_value6\n ";
这是我的结果。
第一个数组的奇数值是 15 第一个数组的奇数值是 21 第一个数组的奇数值是 21 第一个数组的奇数值是 19 第一个数组的奇数值是 2 第一个数组的奇数值是 1如果你不能说。它正在打印数组中所有元素的计数,而不是返回出现奇数次的元素。另外我得到这个错误。
在 OddCount.pl 第 17 行的数字 eq (==) 中使用未初始化的值。第 17 行是比较第一个数组和第二个数组的地方。然而,这些值被清楚地实例化了,当我打印出来时它们就起作用了。有什么问题?
【问题讨论】:
-
请修正你的缩进,它几乎无法阅读。