下面的程序可以正常运行,但是有一个警告提示:
在数字lt(<)行17中使用未初始化的值。
如何解决警告?
任何帮助将不胜感激!
#!/usr/bin/perl
use strict;
use Carp;
use warnings;
my @array = (1,3,7,9,7,10,11,12,13,14,15,16,27,10,9,18,19,20,21,22,23,24,9,3,4);
my $i = 0;
my $j = 0;
my $k = 0;
my $n = $#array+1;
my $tempj = 0;
while(1){
$j=$i;
while (($array[$i] < $array[$i+1]) && ($i < ($n-1))){
$i++;
}
if(( $i - $j) > $k){
$k = $i-$j;
$tempj=$j;
}
if ($i >= ($n-1)){
print "la position : ",$j," , la langueur: ",$k,"\n";
exit;
}
else{
$j=$i;
while ($array[$i]>$array[$i+1] && $i < ($n-1)){
$i++;
}
if(($i-$j) > $k){
$k = $i-$j;
$tempj=$j;
}
if ($i >= ($n-1)){
print "la position : ",$j," , la langueur",$k,"\n";
exit;
}
}
}
提前谢谢
答案 0 :(得分:0)
更改条件的顺序,以确保对数组的访问不会超出范围。这消除了警告:
while ( ($i < ($n-1)) && ($array[$i] < $array[$i+1]) ) {