我正在使用BufferedReader从文件中读取Word对象,但事实证明BufferedReader的设计使其只能读取字符串,而不能读取用户定义的对象。
在这种情况下,Word对象是一个字符串,只是没有定义为字符串
换句话说,如何将str2 [i]从字符串转换为Word对象以使其入队?
这是因为enqueue方法接收Word对象。
public static void main(String[] args) {
WordPriorityQueue x = new WordPriorityQueue();
File file = new File("file goes here");
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
while((st = br.readLine()) != null) {
String str1 = br.readLine();
String str2[] = str1.split(" ", 500);
int i = 0;
while(str2[i] != null) {
//How can I convert the string str2[i] to a Word object?
x.enqueue(str2[i]); //Doesn't work for Strings
i++;
}
}
}
答案 0 :(得分:0)
我不认为您正在使用javax.speech.Word
对象。我认为Word是您的课程。
要创建新对象,Java提供了构造函数。
国防部
Java中的构造函数是用于初始化的特殊方法 对象。当一个类的对象是 已创建。
因此,在您的代码中,必须使用每个项目的构造函数创建一个Word对象。
public static void main(String[] args) throws IOException {
//List that contains all words
List<Word> wordsList = new ArrayList<>();
//Create the scanner
File file = new File("file goes here");
Scanner sc = new Scanner(file);
while( sc.hasNextLine() ) {
String[] lineSplitted = sc.nextLine().split(" "); //add 500 as limit
for (i=0; i<lineSplitted.length; i++) {
//Call constructor
wordsList.add(new Word(lineSplitted[i])
}
}
sc.close()
}
在您的Word类中,添加一个构造函数,该构造函数作为参数需要一个字符串。
public class Word {
private String word;
public Word(String word) {
this.word = word;
}
//Other methods, getter, setter, etc...
}
最后,您将有java.util.List
个对象中的Word
个对象。