• ベストアンサー

IF文の初歩的質問

burnの回答

  • burn
  • ベストアンサー率65% (25/38)
回答No.1

この構文については、問題ないと思いますよ。 この構文だけでは何とも言えませんが、$goukei2という変数は合計値に","カンマを入れたものではないですか? $goukei2を検索してみて、 $goukei2 = $goukei; 1 while $goukei2=~ s/(.*\d)(\d\d\d)/$1,$2/g; といった構文がないか確認してみて下さい。 もし、該当する場合は大元の$goukeiを使って、比較させて見て下さい。 それでも上手く行かない場合は、この構文自体を通っていない可能性があります。 Perlの場合、VBのような便利なツールがあまり無いため、 if ($goukei2 > 5000 ) { print "無料\n"; } else { print "500円\n"; } の前あたりに、例えば$test="pass";でも付けて、 HTMLで書き出してみて、"pass"と表示されたら、通過している、表示されなかったら通過していないと言う形で プログラムの通過状況をチェックしてみてください。 もし、通過していない場合は、その前の構文に問題があります。

s-holmes
質問者

補足

回答ありがとうございました。まだ解決していなくて、合計が10,000円以上でも送料が表示されてしまいます。 長いのですが、ソースを提示します。御助言いただけると助かります。 1 while $zeibetsu_goukei2 =~ s/(.*\d)(\d\d\d)/$1,$2/g; if ($taxrate != 0) {$tax = int($zeibetsu_goukei * ($taxrate / 100)); $sougoukei = $zeibetsu_goukei + $tax;1 while $sougoukei =~ s/(.*\d)(\d\d\d)/$1,$2/g; $zei = '税別'; } else { $zei = ''; } print "<tr><th bgcolor=\"azure\" colspan=4>$zei合計</th><th bgcolor=\"azure\">$zeibetsu_goukei2円</th><th></th></tr>\n"; if ($zeibetsu_goukei2 >= 5000 ) { print "<tr><th bgcolor=\"azure\" colspan=4>送料</th><th bgcolor=\"azure\">0円</th><th></th></tr>\n"; } else { print "<tr><th bgcolor=\"azure\" colspan=4>300円</th><th bgcolor=\"azure\">300円</th><th></th></tr>\n"; } if ($taxrate != 0) { print "<tr><th bgcolor=\"azure\" colspan=4>消費税$taxrate\%($tax円)込み総合計</th><th bgcolor=\"azure\">$sougoukei円</th><th></th></tr>\n"; } print "</table><p>\n";

関連するQ&A

  • if文で、上手く表示されない

    お世話になります。 PerlのBBSを改造中です。 きちんと勉強してはいませんが、なんとなく弄ることは出来るレベルです。 今、ifで、表示の変更をしているのですが、上手く行かなくて困っています。 お分かりになる方、 何らかの原因に心当たりのある方、 どうぞよろしくお願いします。 ★━━━━━━━━━━━━━━━━━━━━★ データを入れているdatファイル内、 $astrologyというのに、「*Leo*」というのが格納されています。 …で、 if(!$astrology){ print "入ってない\n";} else{ print "入ってる\n";} …と入れると、「*Leo*」というデータが入っているわけなので、 「入ってる」と、表示されます。 ですが、 if($astrology == "*Aries*") {print "おひつじ座 <br />$astrology \n";} elsif($astrology == "*Leo*") {print "しし座 <br />$astrology\n";} else{print "その他<br />$astrology\n";} ・・・と、書いてみると 「 おひつじ座 *Leo* 」 と表示されます。 「*Leo*」と表示されているので、呼び込めていない訳ではないと思うのですが…。 ★━━━━━━━━━━━━━━━━━━━━★ 何が原因かわからないので、ちょっとしたアドバイスでも構いません。 ご返答よろしくお願いします。

    • ベストアンサー
    • Perl
  • if~else文の中にまたif~else文をいれるには。

     このプログラムを思うように実行したいのですが、できません。 コンパイルはできるのですが、警告が4つほど出て、結果も自分が思ってるのとは違います。 プログラムのどこを改善すべきか教えてください。 OSはWindows XPで、コンパイラはボーランドのフリーコンパイラを使用しています。 #include<stdio.h> int main(){ int a,b,c,d; printf("1か0を入力してください。\n"); scanf("%d",&a); if(a=0) { printf("2か3を入力してください。\n"); scanf("%d",&b); if(b=2){ printf("今まで合計は%dです。\n",a+b); } if(b=3){ printf("今まで合計は%dです。\n",a+b); } else { printf("指定した数字を入力して下さい。\n"); } } else if(a=1) { printf("あなたは%dを入力しました。\n",a); } else { printf("指定した数字を入力してください。\n"); } return 0; }

  •  php if文について

    phpの問題をといていてどうしてもわからないので教えて下さい。 お願いいたします。 if(【 A 】) { print("true"); } else { print("false"); } 【1】"php" > "perl" 【2】0 != "0" 【3】5 - 6 + 1 【4】"false" 【5】0 + "false" 【6】"543a" < 56 【7】abs(-6) > 10 / 2 あなたの回答: 【1】【4】 正答: 【1】【4】【7】 回答が1,4,7なのかわかりません。 教えて下さい。

    • ベストアンサー
    • PHP
  • if プログラムソース

    このプログラムソースでやりたいことは、 東海と入力すると 地方だと 東海は900円になります。 と表示させたいのですが、 うまく表示されません。 分かる方いましたら、教えてください。 教えて頂けると、助かります。 よろしくお願いします。 以下、プログラムソースです。 print"愛知県から小包の地方を入力してください。\n"; chomp($t=<>); if ( $1=="関東,信越,近畿,東海,北陸") { print"$t地方だと \n"; } elsif ( $1=="東北,中国,四国" ) { print"$t地方だと \n"; } elsif ( $1=="九州") { print"$t地方だと \n"; } elsif ( $1=="北海道") { print"$t地方だと \n"; } elsif ( $1=="沖縄" ) { print"$t地方だと \n"; } if ( $1 == 60 ){ print"$1は700円になります。\n"; } elsif ( $1==80) { print"$1は900円になります。\n"; } elsif ( $1==100 ) { print"$1は1,100円になります。\n"; } elsif ( $1==120 ) { print"$1は1,300円になります。\n"; } elsif ( $1== 140 ) { print"$1は1,500円になります。\n"; } elsif ( $1== 160 ) { print"$1は1,700円になります。\n"; }else { print"$1は1,900円になります。\n"; }

    • ベストアンサー
    • Perl
  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP
  • perlの制御文について

    汚くて申し訳ありません。 以下のようなperlのプログラムを組んだのですが制御文が思い通りに動きません。 比較対象の数字の先頭の0を取れば正常に動くのですがどうしても0をはずすことはできないのです。 いろいろ試してみたのですがどうしてもうまきかないので知恵を貸してください。 $input = <STDIN>; if($input > 0130){ print "A\n"; } elsif(($input > 0120)&&($input < 0130)){ print "B\n"; } else{ print "C\n"; }

  • 条件分岐が多いIF分の書き方について_2

    if (制度コード.compareTo ("08") == 0 && 旧共済従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 上乗有無表示 .compareTo ("1") == 0 && 上乗従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else if (制度コード.compareTo ("09") == 0 && 独自有無表 .compareTo ("1") == 0 && 独自従前額保障表示 .compareTo ("1") == 0) { out.print ("*"); } else { out.print(" ");} } この条件の中に 新たな条件の ただし共通退職時共済識別表示が4の場合だけout.print (" ");とするを 加えたいのですが 普通に加えると 反応しません。 過去の投稿のアドバイスから色々と試したのですが どなたかアドバイスお願い致します。 } else if ( 共通退職時共済識別表示.compareTo ("4") == 0) { out.print (" ");

    • ベストアンサー
    • Java
  • IF文の書き方。

    CGIでhtml表示部分を作成中です。 if文で以下のような物を構築したいのですが可能でしょうか? 表のサイズ(幅)はユーザーが選べるようにしています($all_width = "xxx";)。 いくつかの項目(リンク)がその表の中にあります。 このときに表の幅が何ピクセル以上だったら一列に表示したいので項目の間には空白を入れそれ以下だと文字が1つだけ下に行くなどのデザイン上おかしくなることを防ぐため改行を入れるという風にしたいのですが… if ($all_width = "xxx"){   ##←ここがよくわからない print <td align=\"center\"><a href=\"xxx\" target=\"$tar\">項目1 </a> <a href=\"xxx\" target=\"$tar\">項目2</a></td>\n"; } else {          ##←ここにもそれ以下だったらが必要? print <td align=\"center\"><a href=\"xxx\" target=\"$tar\">項目1 </a><br><a href=\"xxx\" target=\"$tar\">項目2</a></td>\n"; } 幅がこれ以上だったらこっちを表示、それ以下だったらこっちを表示とさせたいのですが可能でしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • if 文についての質問です。

    下記ようなプログラムで、HTML 上のフィールド (AAA)が(100) で (BBB)が(200) の場合 (300) を (変数の$answer) に格納し、実行結果を Sendmail で送信する為、新しく生成された HTML 上のフィールド (CCC) に表示したいのですが、どこが間違っているのでしょうか?お手数ですがどなたか記述上、間違っている箇所をお教え頂けると有難いです。 ---------------------------------------------------------------- #!/usr/local/bin/perl #!/usr/local/bin/perl require "cgi-lib.pl"; &ReadParse(); print "Content-type: text/html\n\n"; print <<HTML_DOCUMENT; if ($in{'AAA'} eq "100" and $in{'BBB'} eq "200") { $answer = '300'; } <html> <head> <title>Web Design [ Estimate - Order ]</title> </head> <body> <form action="test_sendmail.cgi" method="post"> <input name="AAA" type="checkbox" id="AAA" value="100"> <input name="BBB" type="checkbox" id="BBB" value="200"> <input name="CCC" type="text" id="CCC" value="$answer" size="10"> </form> </body> </html> HTML_DOCUMENT

  • if文でゼロとNULLを除外するための初歩的文法

    人口($pop)と面積($area)から人口密度を計算する際、 MySQLから取り出したデータに、ゼロやNULLが混在しているので、 (1) 分母や分子がゼロの場合 (2) 分母や分子がNULLの場合 は、割り算しないようにしたいのですが、 単純に以下のようにすると、 (1) はN/Aと表示されますが、(2)ではN/Aが表示されません。 NULLもはねるようにするにはどのように記述したらよいでしょうか。 if ($pop > 0 and $area > 0){ $density = $pop / $area ; } else { $density = "N/A"; }

    • ベストアンサー
    • PHP