java - 如何避免连续两次返回相同的字符串

标签 java unique-constraint

我正在用 Java 开发 SimpleEliza 图表框。我已经完成了老师要求的所有内容,除了我需要对 AskQuestion 方法进行编程,以免连续两次从数组中返回相同的字符串。我不确定如何解决这个问题。你能给我一些建议吗?

下面是 simpleEliza 类的代码。为了避免混淆,simpleEliza 从不同的(Launcher)类中提取。不过这应该不重要。

public class SimpleEliza {
    int questionNumber=0;

    public boolean hasMoreQuestions() {

        while (true) {
            questionNumber ++;
        if (questionNumber == 6) break;
            return true;}
            System.out.println("I'm done leave me alone.");
            return false;   
    }


    public String askQuestion(){
        String[] questionList = {"How are you doing?", "Have you been doing this long?",
                                "Do you like this class?", "What is you name?",
                                "What do you think about computers?"};
        return questionList[(int)(Math.random()*questionList.length)];
    }

    public String listen(String statement){

        // Positive Responses
        if (statement.toLowerCase().contains("like"))
                return ("That's nice!");
        if (statement.toLowerCase().contains ("love"))
                return ("That's nice!");
        if (statement.toLowerCase().contains ("excellent"))
                return ("That's nice!");
        if (statement.toLowerCase().contains ("good"))
                return ("That's nice!");

        //Negative Responses
        if (statement.toLowerCase().contains("dislike"))
                return ("Yikes");
        if (statement.toLowerCase().contains("hate"))
                return ("Yikes");
        if (statement.toLowerCase().contains("do not like"))
                return ("Yikes");

        return "Uh Huh";
    }

}

最佳答案

只需在类中保留最后一个返回值的索引,然后检查最后一个值是否等于当前值。

int lastIndex = -1;//add this global to your class, not the method.

int currIndex = (int)(Math.random()*questionList.length);
do
{
   result = questionList[currIndex];
}
while (lastIndex == currIndex);

顺便说一下,你应该更喜欢我的方法,而不是将最后一个字符串保留为从 -128 到 127 的 Java 缓存整数,这将使你的程序使用比创建对象进行比较更少的内存;)

关于java - 如何避免连续两次返回相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28269071/

相关文章:

java - 从左上角绘制点击之间的绘制线

java - 只是字符串中的数字

c# - 如何将数据从 .Net Web 应用程序传递到我的 Java Applet

java - 从对象中提取数组

MySQL。同一字段的 UNIQUE 和 PRIMARY KEY 约束

oracle - 在 Oracle 中,使用单个查询将多行从一个表插入到另一个表中

java - 我如何判断一个类是否等于或扩展另一个类(java)

postgresql - 多字段 UNIQUE 约束可以包含来自多个表的字段吗?

php - 从 SELECT 中插入使列对唯一

sql - Postgres 跨表唯一组合约束