Java 如何填写方法public boolean checkAnswer(字符串响应)?

Java 如何填写方法public boolean checkAnswer(字符串响应)?,java,oop,boolean,return,Java,Oop,Boolean,Return,我需要帮助,看看我做错了什么。说明如下: 在getAnswer上使用StringTokenizer 虽然它有更多的代币 检查响应是否与下一步匹配 如果返回true,则返回true 如果没有,则返回false 这就是我的代码: public boolean checkAnswer{ StringTokenizer str = new StringTokenizer(getAnswer()); while (str.hasMoreTokens()){ if(response

我需要帮助,看看我做错了什么。说明如下:

  • 在getAnswer上使用StringTokenizer
  • 虽然它有更多的代币
  • 检查响应是否与下一步匹配
  • 如果返回true,则返回true
  • 如果没有,则返回false
  • 这就是我的代码:

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

    您的代码将被解析为

    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不会检查分支对于非平凡的情况是否是穷举的。

    如果所有标记都不等于
    响应
    ,则要返回
    false
    。当且仅当
    while
    循环退出时,才会出现这种情况。另请参见@Jack的答案。

    只是为了弄清楚这一点。我所做的与在e说明?是的,因为如果令牌匹配,您将返回true,如果令牌不匹配,您将返回false。请参阅Emil Lundberg答案,当所有令牌与您的答案不匹配时,您应该返回false。检查单个令牌时,您永远不应返回false。我已编辑了我认为您正试图告诉我的内容。您是否可以通知我我仍然不正确?
    如果(!response.equals(str.nextToken())返回false;
    您在while循环中不需要这个。您只需要在while循环完成后返回false;。