knockknockprotocol.java

来自「java实现的遗传算法」· Java 代码 · 共 74 行

JAVA
74
字号
package org.jgap.distr.sockets;

public class KnockKnockProtocol {
  private static final int WAITING = 0;

  private static final int SENTKNOCKKNOCK = 1;

  private static final int SENTCLUE = 2;

  private static final int ANOTHER = 3;

  private static final int NUMJOKES = 5;

  private int state = WAITING;

  private int currentJoke = 0;

  private String[] clues = {
      "Turnip", "Little Old Lady", "Atch", "Who", "Who"};

  private String[] answers = {
      "Turnip the heat, it's cold in here!",
      "I didn't know you could yodel!",
      "Bless you!",
      "Is there an owl in here?",
      "Is there an echo in here?"};

  public String processInput(String theInput) {
    String theOutput = null;
    if (state == WAITING) {
      theOutput = "Knock! Knock!";
      state = SENTKNOCKKNOCK;
    }
    else if (state == SENTKNOCKKNOCK) {
      if (theInput.equalsIgnoreCase("Who's there?")) {
        theOutput = clues[currentJoke];
        state = SENTCLUE;
      }
      else {
        theOutput = "You're supposed to say \"Who's there?\"! " +
            "Try again. Knock! Knock!";
      }
    }
    else if (state == SENTCLUE) {
      if (theInput.equalsIgnoreCase(clues[currentJoke] + " who?")) {
        theOutput = answers[currentJoke] + " Want another? (y/n)";
        state = ANOTHER;
      }
      else {
        theOutput = "You're supposed to say \"" +
            clues[currentJoke] +
            " who?\"" +
            "! Try again. Knock! Knock!";
        state = SENTKNOCKKNOCK;
      }
    }
    else if (state == ANOTHER) {
      if (theInput.equalsIgnoreCase("y")) {
        theOutput = "Knock! Knock!";
        if (currentJoke == (NUMJOKES - 1))
          currentJoke = 0;
        else
          currentJoke++;
        state = SENTKNOCKKNOCK;
      }
      else {
        theOutput = "Bye.";
        state = WAITING;
      }
    }
    return theOutput;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?