这是一个家庭作业问题,我坚持了很长时间。我们正在学习一些关于搜索引擎技术的索引文件,统计每个单词出现在它们中的次数。必须创建两个类; 期限和文件创建一个简单的搜索引擎模型
的期限类有:字符串命名WORD,INT频率(字计数频率),一个构造函数中的一个字和一个频率和初始化对象,获取的方法和设置方法(但没有为freq设置方法)。
在文献类,问题询问创建名为术语存储的字符串的话(I给出由空格分开它们),日提交的测量SQRT(求和双大小的阵列(术语 [i] .freq)^ 2);其中freq是字符串中每个不同单词的频率。我必须创建一个构造函数,它将单个String参数作为全文,将其转换为小写,将其分解为白色接下来我要创建一个静态的排序方法,而不需要java.util.Arrays的帮助来按字母顺序排序字符串数组。然后我将创建一个countDistinctStrings方法取排序后的字符串作为参数,并计算唯一字数(忽略重复)。然后调用一个名为的索引内容,它将文档中的单词数组作为参数,填充条目数组,并计算大小,我刚才提到的方法首先确定原始数组中有多少不同的项,然后创建一个条目数组的大小。它将排序顺序中的条款的唯一字符串,并提供频率在一张桌子里。输出应该是这样的: +输入文档的文本: 我想我找到了一些更好的声音,没有人听说过我希望我有一个更好的声音,唱一些更好的话
词频列表: a〜1,有〜1,〜1,〜1,〜3,〜〜,〜〜〜,〜〜〜,〜〜〜,〜〜〜〜〜〜 ,发现〜1,没有了〜1,声音〜1,也就是说〜1(但在一个表)幅度 6.708
这是迄今为止我尝试:期限类
class Term {
private String word;
private int freq;
Term(String word,int freq){
this.word = word;
this.freq = freq;
}
public String getWord()
{
return word;
}
public int getFreq()
{
return freq;
}
public void setFreq(int freq)
{
this.freq = freq;
}
}
然后文件类:(注意代码是不完整的,因为我不知道如何采取下一步,即如何让数组排序方法为其他countDistinctStrings.I甚至不能用我的对象调用的方法,这将引发异常线程“main”显示java.lang.NullPointerException
import java.util.*;
public class Document
{
String text;
private double magnitude;
static String terms [];
Document(String text) {
this.text = text;
text = text.toLowerCase();
String [] terms = text.split("\\s+");
for (String s : terms)
System.out.println(s);
}
private static void sort (String [] terms) {
String tempVar;
for (int i = 0; i < terms.length;i++) {
for(int j = 0; j <terms.length ; j++) {
if(terms[i].compareTo(terms[j]) > 0) {
tempVar = terms [j];
terms [j ]= terms [i];
terms [i] = tempVar;
}
}
}
}
private void countDistinctStrings() {
Document.sort(terms);
}
public double getMagnitude(){
return magnitude;
}
public static void main(String [] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the document text : ");
String text = input.nextLine();
Document object = new Document(text);
object.sort(terms);
}
}
我是一个beginner.I会很感激别人的帮助和时间在我的学习process.This功课现在已经过期了,但我真的很喜欢nt做到这一点并理解它。
Afif,您的代码的第一个问题是在Document的构造函数中。您错误地重新定义了条款。删除'String []'部分,因此它只是'terms = text.split ...并且你会越过这个错误。 –
@ Ian.Many谢谢你的建议,现在它不会抛出空指针异常。但是,我仍然没有得到按字母顺序排序的字符串。 – Afif
我运行了你的代码,它确实按照相反的顺序排序。如果要按顺序排序,请将compareTo行从“>”更改为“<”。 –