当前位置: 首页 > 知识库问答 >
问题:

比较数组的各个部分?

狄鹏
2023-03-14

我真的真的真的真的不知道什么是最好的方法来实现这一点。我已经尽了最大努力,但我基本上想用一系列单词扫描用户的响应,并搜索匹配项,这样我的AI就可以根据用户使用的单词判断出他们的情绪。然而,我还没有找到一个明确或有用的答案。我的代码也非常混乱,因为我尝试使用了许多不同的方法。我需要一种方法来比较数组的各个部分或字符串的各个部分。我找到了查找数组的一部分的方法。就像在绿色鸡蛋和火腿中找到鸡蛋一样,但我没有发现在另一个数组的一部分中找到一个数组的一部分。

     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类数组。这只是课程的一小部分,更不用说程序了,但这应该是我为了完成课程而进行有效比较所需要的全部。如果有人能帮我做这件事,你会帮我省下几个小时的工作。所以谢谢你!!!

共有3个答案

陆烨烁
2023-03-14

尝试使用代币。

每当程序需要将一个数组中的行内容与另一个数组中的行内容进行比较时,只需并行标记这些内容并进行比较。

访问以下Java文档页面以获取更多参考:http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html

甚至可以查看以下网页:http://introcs.cs.princeton.edu/java/72regular/Tokenizer.java.html

晏经武
2023-03-14

如果我没弄错你的问题,你是说这样的?

String words[] = {"green", "eggs", "and", "ham"};
String response = "eggs or ham";
Mood mood = new Mood();

for(String foo : words)
{
   if(response.contains(foo))
   {
      //Check if happy etc...
      if(response.equals("green")
         mood.sad++;
      ...
   } 

}

System.out.println("Success");
...

//CheckMood() etc... other methods.
衡子琪
2023-03-14

如果不使用相对基元数组,则处理字符串会更好,因为在这里您必须自己遍历等等。荷兰有句谚语说:隔着树看不见森林。

在这种情况下,您似乎要对照一组单词来检查输入的单词是否有某种情绪。

让我们使用java集合:

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

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

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

现在,语气将是一组独特的词:

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();

说明:

foreac-word-in-语句获取每个单词。对于每个单词,它检查它是否包含在moodWords中,这是所有语气单词的集合。

百分比取自喜怒无常的句子中的字数。空句子的边界条件由if-then-ett表达式处理...?...:...-给定任意百分比0%的空句子。

printf格式使用%d作为整数,%%用于百分比符号%(自转义),%n用于换行符。

 类似资料:
  • 问题内容: 我有这个间隔,当前每5秒执行一次ajax请求。我对声明有疑问。我的代码总是输入它,并且两个json值完全相同,为什么它认为它们不同? 编辑 这是控制台输出(虚线是分隔请求,它不在实际输出中) 问题答案: 不能保证以相同的方式序列化JSON对象,也不能保证属性以相同的顺序进行序列化,使用并不是测试对象相等性的好方法。 一个更好的例子是这样的函数(前一段时间在互联网上找到,希望我能感谢原始

  • 我有一个简单的javascript问题,我真的需要一些帮助!我正在尝试弄清楚如何在数组之间比较元素,以及在下一个循环中再次比较较大的元素。假设我们有数组A和数组B。 我的问题是,在比较索引处的元素之后,我希望在下一个循环周期中比较较大的元素。 如果A=[5,7,4],B=[2,8,5] 在第一个循环中,5与2进行比较,2较小,因此会发生一些事情。在下一个循环周期中,我希望5与8进行比较,而对于现在

  • 过滤出数组中比较函数不返回 true 的所有值。 类似于difference ,除了接受一个 comparator (比较函数)。 使用 Array.filter() 和 Array.findIndex() 来查找合适的值。 const differenceWith = (arr, val, comp) => arr.filter(a => val.findIndex(b => comp(a, b

  • 问题内容: 我正在尝试编写代码以比较两个数组。在第一个数组中,我输入了自己的数字,但是在第二个数组中,输入了输入文件中的数字。该数组的大小由文件中的第一个数字确定,而第一个数组的大小始终为10。两个数组以及数字的长度必须相同。 我的代码如下: 问题答案:

  • 我试图建立一个函数,检查一个单词或文本是否是回文。要做到这一点,它拆分文本,使每个字母都是一个新数组的元素,它去掉空白,并建立反向数组。然后检查两个数组中处于相同位置的每个元素是否相等。如果不是,则返回false,如果是,则返回true。这里的函数是: 我不知道出了什么问题,但是不管我传递给函数什么单词或文本,函数似乎都在返回一个真值。那有什么不好?