gpt4 book ai didi

java - 如何从文件中读取用户定义的对象?

转载 作者:行者123 更新时间:2023-12-01 19:52:29 24 4
gpt4 key购买 nike

我正在使用 BufferedReader 从文件中读取 Word 对象,但事实证明 BufferedReader 的设计使其只能读取字符串,而不是用户定义的对象。

本例中的 Word 对象是一个字符串,只是未定义为字符串

换句话说,如何将 str2[i] 从 String 转换为 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++;
}
}
}

最佳答案

我认为您没有使用 javax.speech.Word 对象。我想 Word 是你的类(class)。

为了创建一个新对象,Java 提供了构造函数。

Def

A constructor in Java is a special method that is used to initialize objects. The constructor is called when an object of a class is created.

因此,在您的代码中,您必须使用每个项目的构造函数创建一个 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...
}

最后,您将拥有 Word 对象的 java.util.List

关于java - 如何从文件中读取用户定义的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59075142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com