【问题标题】:how to use IF statement inside another IF statement to solve complicated calculation如何在另一个 IF 语句中使用 IF 语句来解决复杂的计算
【发布时间】:2013-09-14 16:14:45
【问题描述】:

问题来自http://www.programmr.com/node/137861/begin 你可以在那里测试它。

我正在编写一个程序,它使用嵌套 if 和复合条件的组合来显示一个人的适当名称。询问用户性别、名字、姓氏和年龄。

如果此人是 20 岁或以上的女性,请询问她是否已婚。如果是这样,显示“夫人”。在她的名字面前。如果没有,请显示“女士”。在她的名字面前。如果女性未满 20 岁,请显示她的名字和姓氏。

如果此人是 20 岁或以上的男性,请显示“先生”。在他的名字面前。否则,显示他的名字和姓氏。

请注意,只有在女性和 20 岁或以上的情况下才应询问他们是否已婚。

这是我的代码:

<?php
$finalName;
echo "What is your Gender (M or F):";
$gender = trim(fgets(STDIN));
echo "First Name:";
$firstName = trim(fgets(STDIN));
echo "Last Name:";
$lastName = trim(fgets(STDIN));
echo "Age:";
$age = trim(fgets(STDIN));

if ($gender == "M" and $age>19) {
    $finalName = "Mr. ".$lastName;
}

if ($age<20) {
    $finalName = $firstName.$lastName;
}

if ($gender == "F" and $age>19) {
    echo "Are you married:";
    $married = trim(fgets(STDIN));

    if ($married == "Y") {
        $finalName = "Mrs. ".$lastName;
    }
    else {
        $finalName = "Ms. ".$lastName;
    }
}

echo "Then I will call you ".$finalName;
exit;
?>

代码没有给出预期的输出。逻辑有问题还是 if 语句不能这样工作?

【问题讨论】:

  • =assignment 运算符,== 是相等性测试。
  • 一方面,您所有的ifs(例如if ($gender = "F")都是错误的,应该使用== 而不仅仅是= 加上您的初始$finalName; 尚未分配,所以没有意义在那里,马上(实际上)@deceze 以 7 秒的优势击败了我,哈哈
  • 我刚刚清理了您代码中的缩进。这就是它应该看起来的样子。请确保正确且一致地缩进您未来的代码!
  • @RahinaRakhi 那么你的问题是什么?这在我看来就像是 Ruby 或用 C 编写的,需要额外的库才能运行。这只是一个在线练习,据我所知,它需要用户输入输出到屏幕。您可以通过使用标准表单和处理程序来获得类似的结果。
  • @RahinaRakhi 好像是这样。如果您没有收到错误消息,并且它按预期工作,那么我们就完成了;-)

标签: php if-statement logic


【解决方案1】:

这终于奏效了。我在 if 语句中将 = 替换为 ==。

我还在 if 语句中将“and”替换为“&&”,效果非常棒。

     if ($gender == "M" && $age>19) {
    $finalName = "Mr. ".$lastName;
}

if ($age<20) {
    $finalName = $firstName." ".$lastName;
}

if ($gender == "F" && $age>19) {
    echo "Are you married:";
    $married = trim(fgets(STDIN));

    if ($married == "Y") {
        $finalName = ("Mrs. ".$lastName);
    }
    else {
        $finalName = ("Ms. ".$lastName);
    }
}

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多