gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:01:15 25 4
gpt4 key购买 nike

我正在用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com