gpt4 book ai didi

java - 比较数组的各个部分?

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

我真的真的不确定解决这个问题的最佳方法是什么。我已经尽力了,但我基本上想用一系列单词扫描用户响应并搜索匹配项,以便我的人工智能可以根据某人使用的单词判断他们的心情。但是,我还没有找到明确或有用的答案。由于我尝试使用了许多不同的方法,我的代码也非常困惑。我要么需要一种方法来比较数组的各个部分,要么需要比较字符串的各个部分。我已经找到了查找数组一部分的方法。就像在绿鸡蛋和火腿中找到鸡蛋一样,但我没有发现任何东西可以在另一个数组的一部分中找到一个数组的一部分。

     public class MoodCompare extends Mood1 {
public static void MoodCompare(String inputMood){
int inputMoodLength = inputMood.length();
int HappyLength = Arrays.toString(Happy).length();
boolean itWorks = false;

String[] inputMoodArray = inputMood.split(" ");
if(Arrays.toString(Happy).contains(Arrays.toString(inputMoodArray)) == true)
System.out.println("Success!");

InputMood 是用户输入的数据,其中应包含符合其心情的关键字。 Happy 是正在扩展的 Mood1 类的数组。这只是类(class)的一小部分,更不用说程序了,但这应该是我进行有效比较以完成类(class)所需的全部内容。如果有人能帮助我解决这个问题,您将节省我的工作时间。所以谢谢你!!!

最佳答案

当您不使用相对原始数组时,操作字符串会更好,因为您必须自己遍历等等。荷兰谚语说:只见树木不见森林。

在这种情况下,您似乎会根据一组单词检查输入的单词以表达某种情绪。

让我们使用java集合:

将输入字符串转换为单词列表:

String input = "...";
List<String> sentence = Arrays.asList(input.split("\\W+"));
sentence.remove("");

\\W+ 是一个或多个非单词字符的序列。 Mind“单词”的意思是A-Za-z0-9_

现在,情绪将是一组独特的单词:

Set<String> moodWords = new HashSet<>();
Collections.addAll(moodWords, "happy", "wow", "hurray", "great");

评估可能是:

int matches = 0;
for (String word : sentence) {
if (moodWords.contains(word)) {
++matches;
}
}
int percent = sentence.isEmpty() ? 0 : matches * 100 / sentence.size();
System.out.printf("Happiness: %d %%%n", percent);

在 java 8 中更加紧凑。

int matches = sentence.stream().filter(moodWords::contains).count();

说明:

foreach-word-in-sentence 获取每个单词。对于每个单词,它都会检查它是否包含在 moodWords(所有情绪单词的集合)中。

百分比是根据句子中喜怒无常的单词数量计算的。空句子的边界条件由 if-then-else 表达式 ... 处理? ... : ... - 给定任意百分比 0% 的空句子。

printf 格式使用 %d 表示整数,%% 表示百分号 %(自转义),%n 表​​示换行符。

关于java - 比较数组的各个部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328709/

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