如何避免翻译程序连续重复输出相同错误响应?
避免连续返回相同错误响应的解决方案
你当前的错误响应逻辑通过随机索引从列表中选取内容,但未记录上一次的选择,导致可能连续两次返回相同的响应。
修改思路
新增一个实例变量记录上一次使用的错误响应索引,每次生成新索引时,确保它与上一次的索引不同。需要特殊处理列表仅含1个元素的情况——此时只能返回该元素,无需规避重复。
修改后的代码
首先在类中添加存储上一次索引的变量:
// 初始值设为-1,表示尚未选择过任何错误响应 private int lastErrorIdx = -1;
然后修改getErrorResponse()方法:
public String getErrorResponse() { // 列表只有一个元素时直接返回,无需处理重复 if (errorResponses.size() == 1) { return errorResponses.get(0); } int idx; do { // 生成0到列表长度-1之间的随机索引 idx = rnd.nextInt(errorResponses.size()); // 循环直到生成与上一次不同的索引 } while (idx == lastErrorIdx); // 更新上一次的索引记录 lastErrorIdx = idx; return errorResponses.get(idx); }
补充说明
该逻辑会持续生成随机索引,直到得到与上一次不同的结果,彻底避免连续重复的错误响应。如果后续需要重置记录(比如用户输入了可翻译内容后,允许下次错误响应重复最早的历史内容),只需将lastErrorIdx重新设为-1即可。
内容的提问来源于stack exchange,提问作者jepa
相关产品推荐
相关产品推荐

