【问题标题】:Quiz Game - IF Statements & Possible Else If?问答游戏 - IF 语句和可能的 Else If?
【发布时间】:2013-08-24 13:06:16
【问题描述】:

我对此很陌生,想知道是否有人可以帮助我。 我希望代码能够在某些问题得到答案后停止提问。我让它在第一个像鹦鹉和鸸鹋上工作,但我似乎无法添加其他人。请告诉我我做错了什么。

到目前为止的代码是:

import java.util.Scanner;

/**
* Guessing Game.
* 
* @author O 
* @version 99
*/
public class Quiz
{
public static void main(String[] args)
{
    Scanner keyboard = new Scanner(System.in);
    boolean answerIsCorrect;

    System.out.println("Think of an animal.\n");

    if(ask("Is it a bird? ", keyboard))
    {
        if(ask("Can it fly? ", keyboard))
        {
            answerIsCorrect = ask("Is it a parrot? ", keyboard);
        }
        else
        {
            answerIsCorrect = ask("Is it an emu? ", keyboard);
        }

    {
        if(ask("Does it live in the ocean? ", keyboard))
    {
        if(ask("Is it a whale? ", keyboard))
        {
            answerIsCorrect = ask("Answer 1? ", keyboard);
        }
        else
        {
            answerIsCorrect = ask("Answer 2? ", keyboard);
        }
    }
    }
    }



    else



    {
        if(ask("Does it lay eggs? ", keyboard))
        {
            answerIsCorrect = ask("Is it a platypus? ", keyboard);
        }
        else
        {
            answerIsCorrect = ask("Is it a kangaroo? ", keyboard);
        }
    }


    if(answerIsCorrect)
    {
        System.out.println("I am good!");
    }
    else
    {
        System.out.println("Drats! I guess I don't know then!");
    }
 }

 /**
 * A utility method to ask a yes/no question
 * 
 * @param question the question to ask
 * @param a scanner for user input
 * 
 * @return whether the user answered "yes" (actually, whether the user answered
   anything starting with Y or y)
 */
 private static boolean ask(String question, Scanner keyboard)
 {
    System.out.print(question);

    String answer = keyboard.nextLine().trim();



    return answer.charAt(0) == 'Y' || answer.charAt(0) == 'y';
  }
   }

【问题讨论】:

  • 我不知道为什么这会降低投票率。每个人都需要从某个地方开始,虽然这可能不像未排序数组和排序数组的分支预测那样有趣或复杂,但 Ozzy 需要一些指导,这就是 SO 的目的。
  • @sgcharlie 我同意,这个问题是有效的,Ozzy 已经证明了最小的努力并提供了代码。

标签: java if-statement design-decisions


【解决方案1】:

您的代码中似乎有一对额外的括号(在初始 if 语句之后。您可能想要删除它们。另外,您可能想要添加一个 else if。所以,类似于:

if(ask("Is it a bird? ", keyboard))
{
    if(ask("Can it fly? ", keyboard))
    {
        answerIsCorrect = ask("Is it a parrot? ", keyboard);
    }
    else
    {
        answerIsCorrect = ask("Is it an emu? ", keyboard);
    }           
}
else if(ask("Does it live in the ocean? ", keyboard))
{
    if(ask("Is it a whale? ", keyboard))
    {
        answerIsCorrect = ask("Answer 1? ", keyboard);
    }
    else
    {
        answerIsCorrect = ask("Answer 2? ", keyboard);
    }
}
else
{
    if(ask("Does it lay eggs? ", keyboard))
    {
        answerIsCorrect = ask("Is it a platypus? ", keyboard);
    }
    else
    {
        answerIsCorrect = ask("Is it a kangaroo? ", keyboard);
    }
}

希望对您有所帮助。祝你学习编程好运。

【讨论】:

  • @Ozzy 当你启动并运行它时,你可能想考虑使用树结构来代替 if-else if-else;它的结构非常适合这种事情。
  • 流程就像一棵树,但是树数据结构会帮助选择(如果嵌套的话)???除了为此类算法嵌套 if-else 之外,还有什么更好的解决方案?
  • 我同意 Shane 的观点。树结构将是一个更好的实现,特别是如果您想从数据源(如数据库或文件)读取问题而不是硬编码字符串。如果您希望这是一个严肃的程序,那么您绝对应该研究递归结构。不过,我建议先掌握if-else(可能还有for 循环)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 2015-08-13
  • 2012-09-27
  • 2014-11-11
  • 1970-01-01
相关资源
最近更新 更多