2012-02-20 136 views
0

聊天機器人類:聊天機器人類(服務類)和聊天機器人客戶端(應用)類

甲聊天機器人是一種計算機程序設計成模擬一個智能會話與一個或多個人類。在這個實驗中,我們將爲我們的chatbot建立框架,整個學期這個框架將得到增強。

ChatBot類將定義一個名稱字段來標識聊天機器人(命名您的chatbot任何你喜歡的東西)。這將是一個不可變的字段;名稱字段只需要一個訪問器方法。名稱字段應該在默認構造函數中設置。

ChatBot類定義了兩個附加的方法,一個返回包含chatbot名稱的介紹性消息。另一個接受一個字符串併產生一個字符串回覆。此時,回覆方法總是返回相同的消息。

這是UML圖的樣子

聊天機器人(類或構造函數)

減號( - 私營)名稱:字符串

加號(+公共)的getName():字符串

plus(+ public)introbot():字符串

plus(+ public)public reply(userInput:String):String

ChatBot客戶端:

客戶端應用程序將管理最終使用和chatbot之間的聊天。客戶端負責檢索最終用戶的評論,並將其傳遞給聊天機器人,並檢索並顯示聊天機器人的響應。用戶或聊天機器人的名稱應該用作輸入提示。下面是客戶端的運行示例:

輸入您的姓名:傑夫

嗨!我的名字是mutebot

傑夫>你好

mutebot>我剛學說話

這是我的服務類

/* 
* Java Car service class 
* @author blake 
* 2/13/2012 
*/ 

public class Chatbot 
{ 
    private final String name; 
    private String introbot; 
    private String reply; 

    public Chatbot(String newName, String newIntrobot, String newReply) 
    { 
    name = newName; 
    } 


    public String getName() 
    { 
    return name; 
    } 
} 

這是我的應用程序類

import java.util.Scanner; 
public class ChatbotClient 
{ 
    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     System.out.println("What is your name? "); 
     String name = input.nextLine(); 

     System.out.println("\nHi " + name + " My name is copbot"); 


     System.out.println(name); 
     String reply = input.nextLine(); 

     System.out.println("/ncopbot" + "I'm just learning how to talk "); 



    } 
} 

我不完全確定這是否正是問題所要求的或所要求的,或者如果這是做到這一點的方法。

我認爲服務類可能沒問題,但我對應用程序類不太確定,因爲那樣做會影響你的訪問器,mutators和那些類型的東西,我想你只需設置你的字段並服務類中的實例。

回答

0

有幾件事要解決,但你要朝正確的方向前進。

您的聊天機器有一條損壞的導入線,但我認爲這只是一個複製/粘貼故障。

說明指定聊天機器人的名稱是隻讀的,但你有一個setter方法,所以你可能不希望這樣。 ;)另外,UML將「introbot」和「reply」描述爲返回字符串的方法,而不是字符串變量。

一旦你做出了這些改變,那麼你應該能夠從你的聊天機客戶端調用這兩種方法。您目前擁有「System.out.println」行的地方應該是對聊天機器人的調用。例如,所述片段:

"My name is copbot" 

應該成爲類似

"My name is " + myChatbot.getName() 

答覆(userInput:String)方法應具有通過參數列表傳遞給它的用戶輸入。它的返回值(也是一個字符串)可以用來填寫「我正在學習如何說話」println。

祝你好運!

+0

你說chatbot有一個虛線導入,你是什麼意思,對於只讀部分你說我有一個setter方法,這是否意味着我必須從服務類中刪除集名字符串。 – blake 2012-02-20 00:46:18

+0

立即在您的評論下,您有一條只說「導入」的行。導入語句需要在它們之後立即包名,例如,「import java.util.Scanner;」在你的第二個代碼片段中。是的,如果你想讓「名字」只讀,你不應該有一個setName()方法。 (你應該也可以使「名稱」成爲「最終」變量) – Erica 2012-02-20 00:50:38

+0

我知道,導入是偶然的(我的錯誤),所以如果我刪除集名稱方法,那麼我應該怎麼做,你建議name是最後一個變量,所以我刪除了名字的setter方法,然後將getname方法作爲最終變量。 – blake 2012-02-20 00:53:58