gpt4 book ai didi

java - 从文件读取数组元素时出现 NullPointerException 错误 - Java

转载 作者:行者123 更新时间:2023-12-01 16:34:46 24 4
gpt4 key购买 nike

在我的程序中,我创建一个景点并填写门票类型的数量、标题和费用,然后退出程序并再次运行它。

我有一个从文件中读取元素的构造函数。当我尝试读取数组元素时,它给我一个 NullPointerException即使元素不为空也会出错。

当我注释掉错误所在位置下面的代码块时,我得到 NumberFormatException输入字符串“Tour Only”会出现错误,所以我知道它不为空。

fileScanner.nextLine();
for (int i = 0; i < getTicketTypesNum(); i++)
this.ticketTypeTitle[i] = fileScanner.nextLine();
fileScanner.nextLine();

完整代码如下。

Attraction.java

// The constructor.
public Attraction(Scanner fileScanner) {
...

// The data read before the error.
fileScanner.nextLine();
this.ticketTypesNum = Integer.parseInt(fileScanner.nextLine());
fileScanner.nextLine();

fileScanner.nextLine();
for (int i = 0; i < getTicketTypesNum(); i++) {
// Line where the error is located.
this.ticketTypeTitle[i] = fileScanner.nextLine();
}

fileScanner.nextLine();
for (int i = 0; i < getTicketTypesNum(); i++)
this.ticketTypeCost[i] = Integer.parseInt(fileScanner.nextLine());
fileScanner.nextLine();

...
}


// Store the attraction information and write it to file.
public void writeData(PrintWriter pw) {
...

pw.println("Number of Ticket Types:");
pw.println(getTicketTypesNum());
pw.println();

pw.println("Ticket Titles:");
for (int i = 0; i < getTicketTypesNum(); i++)
pw.println(getTicketTypeTitle()[i]);
pw.println();

pw.println("Ticket Costs:");
for (int i = 0; i < getTicketTypesNum(); i++)
pw.println(getTicketTypeCost()[i]);
pw.println();

...
}

如果您需要更多代码,我将编辑我的问题以包含更多代码。

感谢您的帮助!

更新

我尝试注释掉出现错误的行并继续运行代码,每当我必须读取数组元素时,我都会收到 NullPointerException。

最佳答案

这是可以运行的示例程序。您可以尝试这个并打印您的数组。确保在从文件中获取元素之前进行 scanner.hasNextLine() 检查。另外,理想情况下,您的数组大小应等于文件中占用的行数。

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Scanner;

public class FileRead {

public static void main(String args[]) {

String array[] = new String[6];

File file = new File("C:\\Users\\Desktop\\text");

try (Scanner sc = new Scanner(file, StandardCharsets.UTF_8.name())) {
int i =0;
while (sc.hasNextLine()) {

array[i] = sc.nextLine();
i++;
}
} catch (IOException e) {
e.printStackTrace();
}

System.out.println(Arrays.toString(array));

}

}

请告诉我这是否适合您。

关于java - 从文件读取数组元素时出现 NullPointerException 错误 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61982676/

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