我不认为这是重复的,因为我一直在寻找具有相同头衔的所有其他科目。所以,这是我的代码:
'use strict';
/**
* @ngdoc function
* @name bitbloqApp.controller:softwareTabCtrl
* @description
* # softwareTabCtrl
* Controller of the bitbloqApp
*/
angular.module('bitbloqApp')
.controller('softwareTabCtrl',softwareTabCtrl);
function softwareTabCtrl( $rootScope, $scope, $timeout, $translate, $window, bloqsUtils, bloqs, bloqsApi,
$log, $document, _, ngDialog, $location, userApi, alertsService, web2board, robotFirmwareApi, web2boardOnline, projectService,
utils) {
//code
};
我制作了一个程序,可以计算出数字n中有多少个偶数 当我尝试运行我的程序时,会显示以下错误:
while ($n>0)
{
if (($n%10)%2 eq 0)
$k = $k+1;
$n = $n/10;
}
第7行将是:
Scalar found where operator expected at script.pl line 7, near ")
$k"
(Missing operator before $k?)
syntax error at script.pl line 7, near ")
$k "
答案 0 :(得分:3)
请参阅perldoc perlsyn
:
if (EXPR) BLOCK if (EXPR) BLOCK else BLOCK if (EXPR) BLOCK elsif (EXPR) BLOCK ... if (EXPR) BLOCK elsif (EXPR) BLOCK ... else BLOCK
... if
语句必须后跟块,而不是表达式。
if (($n%10)%2 eq 0) {
$k = $k+1;
}
$n = $n/10;
您还可以使用if
作为语句修饰符:
Any simple statement may optionally be followed by a SINGLE modifier, just before the terminating semicolon (or block ending). The possible modifiers are: if EXPR
...在这种情况下,您的代码将如下所示:
$k = $k+1 if ($n%10)%2 eq 0;
$n = $n/10;
...但是this usage is discouraged。
除此之外:将数字与==
而不是eq
进行比较。
答案 1 :(得分:3)
我猜你有编程语言的经验,如果if
块只包含一个语句,则块标记是可选的。在Perl中,它们总是必需的。
if (($n%10)%2 == 0) {
$k = $k+1;
}
$n = $n/10;
我还将eq
更改为==
- 因为看起来您正在比较数字,而不是字符串。
答案 2 :(得分:1)
您正在使用Perl编写Python代码。这对Perl代码来说要好得多!
while ($n>0)
{
if (($n%10)%2 eq 0)
$k = $k+1;
$n = $n/10;
}
你有while
的大括号; if
需要相同的处理,比如
while ( $n > 0 ) {
if ( ( $n % 10 ) % 2 eq 0 ) {
$k = $k + 1;
$n = $n / 10;
}
}
但是Perl比Python有更多的运算符,所以我会写这个,注意( $n % 10 ) % 2
与$n % 2
相同,因为2是10的因子,你应该使用{{1}而不是==
用于数字相等
eq
我认为你应该强制while ( $n ) {
next if $n % 2;
++$k;
$n /= 10;
}
成为两种语言的整数