greetingsprotocol.java

来自「电子工业出版社出版的《java2应用开发指南》配套光盘源代码」· Java 代码 · 共 81 行

JAVA
81
字号
// GreetingsProtocol.java
import java.net.*;
import java.io.*;

public class GreetingsProtocol
{
    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 + -
显示快捷键?