【问题标题】:how to fill the method public boolean checkAnswer(String response)?如何填写方法 public boolean checkAnswer(String response)?
【发布时间】:2013-01-12 10:49:29
【问题描述】:

我需要帮助看看我在这里做错了什么。说明是:

  1. 在 getAnswer 上使用 StringTokenizer ;
  2. 虽然它有MoreTokens;
  3. 检查响应是否匹配 nextToken ;
  4. 如果有则返回真;
  5. 如果没有,则返回 false。

这是我的代码:

public boolean checkAnswer{
 StringTokenizer str = new StringTokenizer(getAnswer());
    while (str.hasMoreTokens()){
        if(response.matches(str.nextToken())) return true;
    }
   return false;
}

【问题讨论】:

  • if(!response.equals(str.nextToken()))return false; 在 while 循环中不需要这个。在while循环完成后你只需要return false;

标签: java oop boolean return


【解决方案1】:

如果没有任何标记等于response,您想返回false。当且仅当您的 while 循环退出时,才会出现这种情况。另请参阅@Jack 的回答。

【讨论】:

    【解决方案2】:

    您的代码将被解析为

    public boolean checkAnswer {
     StringTokenizer str = new StringTokenizer(getAnswer());
        while (str.hasMoreTokens()) {
            if(response.equals(str.nextToken())) return true;
        }
    
        if(!response.equals(str.nextToken()))return false;
    }
    

    根据您的规范,这不是您需要做的事情(可能也不是您在编写它时打算做的事情),并且它既不会在每个分支上返回布尔值(因为 Javac 不会查看分支是否详尽无遗对于非平凡的情况。

    【讨论】:

    • 只是为了弄清楚这一点。我所做的与说明中的要求不正确?
    • 是的,因为如果令牌匹配,则返回 true,如果令牌不匹配,则返回 false。请参阅 Emil Lundberg 的答案,当所有标记都与您的答案不匹配时,您应该返回 false。你永远不应该通过检查单个令牌返回 false。
    • 我已经编辑了我认为你想要告诉我的内容。如果我仍然不正确,你能告诉我吗?
    猜你喜欢
    • 2011-04-07
    • 2013-07-06
    • 2018-04-24
    • 1970-01-01
    • 2022-07-19
    • 2011-11-24
    • 1970-01-01
    • 2016-04-04
    • 2018-11-20
    相关资源
    最近更新 更多