我真的不确定解决这个问题的最佳方法是什么。我尽可能地得到了,但我基本上想要用一系列单词扫描用户响应并搜索匹配,以便我的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类的数组。这只是课程的一小部分,更不用说程序,但应该是我需要进行有效的比较以完成课程。 如果有人可以帮助我,你将节省我几个小时的工作。所以,谢谢!
答案 0 :(得分:1)
当你不使用相对原始数组时,操作字符串会更好,你必须自己走过等等。一句荷兰谚语说:没有看到木头穿过树林。
在这种情况下,你似乎会针对一些情绪来检查输入的单词。
让我们使用java集合:
将输入字符串转换为单词列表:
String input = "...";
List<String> sentence = Arrays.asList(input.split("\\W+"));
sentence.remove("");
\\W+
是一个或多个非单词字符的序列。心灵&#34;字&#34;意思是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-words-in-sentence取代每个单词。对于每个单词,它会检查它是否包含在moodWords
中,即所有情绪单词的集合。
这个百分比取决于句子中的单词数量是喜怒无常的。空句子的边界条件由if-then-else表达式... ? ... : ...
处理 - 给出任意百分比0%的空句子。
printf格式使用%d表示整数,%%表示百分号%
(自转),%n表示换行符。
答案 1 :(得分:0)
如果我正确理解你的问题,你的意思是这样的吗?
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.
答案 2 :(得分:0)
尝试使用令牌。
每次程序需要将一行中的行内容与另一个数组进行比较时,只需并行标记内容并进行比较。
访问以下Java Doc页面以获取更多参考:http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html
甚至查看以下网页: http://introcs.cs.princeton.edu/java/72regular/Tokenizer.java.html