2

在下面的示例中,@DAYS是一个月中的天数,并且 中的条目@DAYS_SINCE_RAIN对应于 中的条目@DAYS,例如$DAYS_SINCE_RAIN[4]是自上次下雨以来的天数$DAYS[4]

@DAYS_SINCE_RAIN中,有雨的一天的值为 0。我想要最后一个出现 0 的实例。

#iii. Find the last day of rain in April 2013.
print "#iii. Find the last day of rain in April 2013.\n";
$i=0;
@getday=();

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){
    push @getday, @DAY[$i];
    $i++; 
    if($i=$#DAYS_SINCE_RAIN){
        last;
    }
};

print "@DAYS_SINCE_RAIN";
print "\n day of last rain: @getday[$i] ";

似乎没有存储任何值:(

4

1 回答 1

5

您在这里使用的是赋值运算符而不是比较:

if($i=$#DAYS_SINCE_RAIN){

将 更改===

除此之外,循环:

while(@DAYS_SINCE_RAIN[$i]=~ m/0/){

将在第一天无雨退出。您可以采取稍微不同的方法,从头开始并返回:

my $i = $#DAYS_SINCE_RAIN;

while ($i >= 0) {
    last if $DAYS_SINCE_RAIN[$i] == 0;
    $i--;
}

print "\n day of last rain: $DAYS[$i] ";
于 2013-09-26T14:31:14.313 回答