我在很长一段时间内遇到问题需要我计算一个术语x术语矩阵。所以,我有2个数组,关键字和句子如下:
{
"options": {
"chart": {
"backgroundColor": "#eaeaf2",
"type": "column",
"zoomType": "xy"
},
"navigator": {
"enabled": true
},
"plotOptions": {
"series": {
"animationLimit": "Infinity",
"animation": {
"duration": 9000
}
}
},
},
"credits": {
"enabled": false
},
"useHighStocks": true,
"series":
}
]
}
接下来,我必须将它们制成表格,如下图所示。
逻辑:
这是我尝试过但不知何故出错。
String[] Keywords = {"Human", "Machine", "Interface", "Application" };
String[] Sentence = {"Human is Machine", "Interface of Robot", "Application on Human"};
感谢任何帮助。谢谢!
答案 0 :(得分:3)
for
循环中存在一些逻辑错误
使用if (Keywords[i].contains(Sentence[q]))
,您将检查关键字是否包含句子,而不是相反的关键字
另一件事是您的矩阵基于Keywords
,但您使用Sentence
迭代器来指示该行。
正确的代码是
for (int i=0;i<Keywords.length-1;i++){
for(int j = i+1; j < Keywords.length; j++){
int count = 0;
for (int q=0;q<Sentence.length;q++){
if(Sentence[q].contains(Keywords[i]) && Sentence[q].contains(Keywords[j])){
count++;
}
}
matrix[i][j] = count;
matrix[j][i] = count;
}
}
这将输出您的示例矩阵。
答案 1 :(得分:0)
您的计划有几个错误:
if (Keywords[i].contains(Sentence[q]))
此条件检查关键字中是否包含句子。你想检查相反的情况。
matrix[i][q] = count++;
你为什么用这个?如果找到匹配项,则要将单元格的值设置为1。只需将值设置为1,而不是使用甚至不起作用的复杂表达式:
matrix[i][q] = 1;
一般来说:
无论您使用什么IDE,都应提供调试器。学会使用它;如果你想更大规模地编写工作代码,那么无论如何都无法避免这种情况。