⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 knockknockprotocol.java

📁 精通java核心技术》随书源代码
💻 JAVA
字号:
// ==================== Program Discription =====================
// 程序名称:示例12-7: KnockKnockProtocol.java
// 程序目的:服务端与客户端相互交互的协议。
//=============================================================
import java.net.*;
import java.io.*;

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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -