gpt4 book ai didi

java - 在 Java 中将文本文件加载到对象中

转载 作者:行者123 更新时间:2023-12-01 12:26:12 27 4
gpt4 key购买 nike

我正在尝试编写一个类,但遇到了问题。我遇到的问题是我需要读取文本文件并将其从方法中返回。我陷入了很多错误。谁能帮我解决这个问题吗?

文本文件如下所示

问题1

答案1

问题2

答案2

问题3

答案3

...

等等。

import java.io.*;
import java.util.*;

public class Quiz {

private String fName; // Name of the file you will be reading from
private Scanner theFile; // Scanner use to read from the file
public int status = 0;
public String line = null;
public int i = 0;

// Create a new Quiz object by opening the associated file. Note that this
// method throws an IOException, so in the method that calls it you must
// also
// have in the header "throws IOException". We will discuss how to handle
// these exceptions later.
public Quiz(String f) throws IOException {

File Quiz = new File(f);
Scanner theFile = new Scanner(Quiz);
theFile.close();
return Quiz;
}

// First check the status. If it is 1 or 2 simply return false.
// If it is 0, check the file:
// If there is a line in the file, return true
// If there is no line in the file, set status to 1 and
// return false.
public boolean hasAQuestion() {
if (status == 1 || status == 2) {
return false;
}
else if (status == 0) {
if (line = theFile.readLine() != null) {
return true;
}
else if (line = theFile.readLine() == null) {
status = 1;
return false;
}
}
}

// Return that status of the Quiz object:
// Status = 0: everything ok
// Status = 1: end of file reached
// Status = 2: error has occurred
public int getStatus() {
if (line = theFile.readLine() != null) {
status = 0;
}
else if (line = theFile.readLine() == null) {
status = 1;
}
else if (line.theFile.readLine() == " ") {
status = 2;
}
return status;
}

// Get the next question and set the status appropriately:
// If status is not 0, return null, otherwise:
// If no lines are left before anything is read, set status
// to 1 and return null
// If the question is read but no answer left, set status to
// to 2 and return null
// If both the question and answer are read, return them in
// a new Question object.

public Question getQuestion() {
return null;
}
}

最佳答案

首先,

File Quiz = new File(f);

不是一个好的做法。 Quiz 是类(class)的名称。 File 也是一个类的名称。如果您想创建一个 File 对象,请执行以下操作:

File quizFile = new File(f);

您不应该在 Quiz 构造函数内创建 Quiz 对象,因为构造函数将调用 Quiz 构造函数...并且您会陷入无限循环。这可能只是一个命名错误,但请记住不要以大写字母开头变量名,并避免在 Quiz 类中使用文件对象名称测验,因为这会导致一些困惑。

所以无论如何你的错误来自这一行:

theFile.close();

您刚才所做的是创建一个 Scanner 对象,打开一个流以从文本文件中读取,然后关闭它。所以现在您无法读取该文件,因为您刚刚关闭了流。解决这个问题的方法是在 Quiz 类中设置一个 close() 方法,一旦其他类完成从文件的读取,就可以调用该方法。

最后,

return Quiz;

构造函数不返回任何内容。他们只是构造一个类的对象。另外,我不完全确定,但您可能会混淆什么是类和什么是对象。类就像对象的模板;对象可以做的事情以及它具有哪些属性是由类定义的。例如,在声明中

Cat bob = new Cat();

您正在创建 Cat 类的对象 (bob)。

语句return Quiz;,即使它不在构造函数中,也没有任何意义,因为您返回的是而不是对象。如果您想要一个静态方法返回一个对象,那么它应该类似于

return new Cat();

不是 返回猫;

关于java - 在 Java 中将文本文件加载到对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26311113/

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