我的简单计算器程序有问题。它没有使用我的if
语句执行计算:它直接转到else
。
#!/usr/bin/perl
print "enter a symbol operation symbol to and two numbers to make a calculation";
chomp($input = <>);
if ($input eq '+') {
$c = $a + $b;
print $c;
}
elsif ($input eq '-') {
$c = $a - $b;
print $c;
}
elsif ($input eq '*') {
$c = $a * $b;
print $c;
}
elsif ($input eq '/') {
$c = $a / $b;
print $c;
}
elsif ($input eq '%') {
$c = $a % $b;
print $c;
}
elsif ($input eq '**') {
$c = $a**$b;
print $c;
}
elsif ($input eq 'root') {
$c = sqrt($a);
$c = sqrt($b);
print $c;
}
else {
print " you messed up" . "$input" . "$a" . "$b";
}
答案 0 :(得分:3)
首先,您需要将strict和warnings添加到脚本的顶部
#!/usr/bin/perl
use strict;
use warnings;
这会提醒您注意很多语法错误,并强迫您完全重新思考/重构代码。这是一件好事。
一个显而易见的事情是$a
和$b
从未初始化。并且您的第一个if
错过了input
之前的美元符号。
我会将变量的捕获更改为以下内容:
print "enter a symbol operation symbol to and two numbers to make a calculation";
chomp(my $input = <>);
my ($operation, $x, $y) = split ' ', $input.
我也不会使用$a
和$b
作为变量名,因为它们是perl排序使用的特殊变量。一旦你确定你正确地获得了你的输入,那么就开始使用其余的逻辑。
答案 1 :(得分:0)
您在input
之前的第一个条件中忘记了'$':
if($input eq '+'){
$c = $a + $b;
print $c;
答案 2 :(得分:0)
my $a = shift(@ARGV); // first argument is a
my $b = shift(@ARGV); // second argument is b
my $input = shift(@ARGV); // third argument is an operator
if($input eq '+'){...
另外,除非你精通Perl,否则我建议在顶部使用'use strict'和'use warnings'。