【问题标题】:Chatbot class (service class) and chatbot client (application) class聊天机器人类(服务类)和聊天机器人客户端(应用程序)类
【发布时间】:2012-02-20 00:27:52
【问题描述】:

聊天机器人类:

聊天机器人是一种计算机程序,旨在模拟与一个或多个人类的智能对话。在本实验中,我们将为我们的聊天机器人建立框架,并将在整个学期中得到增强。

ChatBot 类将定义一个用于标识聊天机器人的名称字段(为您的聊天机器人命名任何您喜欢的名称。)这将是一个不可变字段; name 字段只需要一个访问器方法。 name 字段应该在默认构造函数中设置。

ChatBot 类定义了两个附加方法,一个返回包含聊天机器人名称的介绍性消息。另一个接受一个字符串并产生一个字符串回复。在这个时间点,reply 方法总是返回相同的消息。

这就是 UML 图的样子

聊天机器人(类或构造函数)

减号(-私有)名称:字符串

加号 (+ public) getName() : 字符串

加号 (+ public) introbot() : 字符串

加号(+公开)公开回复(用户输入:字符串):字符串

聊天机器人客户端:

客户端应用程序将管理最终用户和聊天机器人之间的聊天。客户端负责检索最终用户的评论,将其传递给聊天机器人,并检索和显示聊天机器人的响应。用户或聊天机器人的名称应用作输入提示。下面是客户端的示例运行:

输入您的姓名:杰夫

嗨!我叫静音机器人

杰夫>你好

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 " );
    }
}

我不确定这是否正是问题所要求或要求的,或者这是否是解决问题的方法。

我认为服务类可能没问题,但我不太确定应用程序类,因为您将在其中执行访问器、修改器和诸如此类的事情,我猜您只是设置了字段和实例在服务类中。

【问题讨论】:

    标签: java chatbot


    【解决方案1】:

    有一些问题需要解决,但您正朝着正确的方向前进。

    您的聊天机器人的导入行已损坏,但我认为这只是复制/粘贴故障。

    说明指定聊天机器人的名称是只读的,但您有一个 setter 方法,所以您可能不希望这样。 ;) 此外,UML 将“introbot”和“reply”描述为返回字符串而不是字符串变量的方法。

    完成这些更改后,您应该可以从聊天机器人客户端调用这两种方法。您当前有“System.out.println”行的地方,这些应该是对聊天机器人的调用。比如片段:

     "My name is copbot"
    

    应该变成类似

     "My name is " + myChatbot.getName()
    

    reply(userInput : String) 方法应该通过参数列表将用户输入传递给它。然后它的返回值(也是一个字符串)可以用来填写“我只是在学习如何说话”println。

    祝你好运!

    【讨论】:

    • 你说聊天机器人有一个断线导入,你这是什么意思,对于你说我有一个setter方法的只读部分,这是否意味着我必须删除集合名称来自服务类的字符串。
    • 在您的评论下方,您有一行仅显示“导入”。导入语句需要紧跟其后的包名,例如“import java.util.Scanner;”在你的第二个代码 sn-p.是的,如果您希望“名称”为只读,则不应使用 setName() 方法。 (您可能还应该将“name”设为“final”变量。)
    • 我明白了,导入是偶然的(我的错误),所以如果我删除 set name 方法那我该怎么办,你建议 name 是最终变量,所以我删除了 setter name 方法,然后将 getname 方法保留为最终变量。
    • 是的,去掉“setName”,把name变量变成“final”。
    • 好吧,解决了所有问题,但仍然不确定如何将名称设为“FINAL”,将其保留在 getName,或转到应用程序类然后设置,我正在更新(编辑)我的整体服务类像我猜想的那样展示它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 2020-03-31
    • 2014-05-17
    相关资源
    最近更新 更多