java - 无法从 Java 文本文件中读取信息并对其进行排序

标签 java sorting io nullpointerexception bufferedreader

我正在尝试使用 BufferedReader 读取文本文件并对文件中的信息进行排序。目的是加载并能够访问我正在制作的游戏的 map 信息。我遇到的问题是,当我的程序尝试对信息进行排序时,我得到一个 NullPointerException

LoadWorld.java:

public class LoadWorld {

    private static String CurrentString;
    private static String[] LinePts;
    private static String Path="";
    private static String Name="";
    private static String Auth="";
    private static String Date="";

    private static boolean Reading = true;
    private static boolean OnMap = false;

    private static int Maps = 0;

    private static Map[] Map;

    public static void Load() {

         try {

                BufferedReader reader = 
                    new BufferedReader(new InputStreamReader(LoadWorld.class.getResourceAsStream("/Maps/Maps.txt")));

                while(Reading) {

                    CurrentString = reader.readLine();

                    if (CurrentString.equals("{")) {OnMap=true;Maps+=1;}
                    else {Reading=false;}

                    while(OnMap) {



                        CurrentString = reader.readLine();
                        if (!(CurrentString.equals("}"))) {

                            LinePts = CurrentString.split("-");

                            if (LinePts[0].equals("PATH")) {Path=LinePts[1];}
                            else if (LinePts[0].equals("NAME")) {Name=LinePts[1];}
                            else if (LinePts[0].equals("AUTH")) {Auth=LinePts[1];}
                            else if (LinePts[0].equals("DATE")) {Date=LinePts[1];}

                        }
                        else {

                            Map[Maps].Path = Path;
                            Map[Maps].Name = Name;
                            Map[Maps].Auth = Auth;
                            Map[Maps].Date = Date;
                            OnMap=false;

                        }

                    }

                }

                reader.close();         
            }

            catch(IOException e) {

                e.printStackTrace();

            }

    }

问题出现在“else{”部分的“map[maps].path = path;”处。

map .java:

public class Map {

    public String Path;
    public String Name;
    public String Auth;
    public String Date;
    public String Map;

}

我尝试读取的文本文件:Maps.txt

{
PATH-Default/Basic.txt
NAME-Basic Map
AUTH-Aelex Esrom
DATE-11/1/15
}

感谢任何帮助!预先感谢您的任何答复。

最佳答案

你需要初始化你的变量Map

Map = new Map[5]; //array of fixed size 5

也许您正在尝试以 PHP 方式动态添加数组元素,但它在 Java 中的工作方式不同。您将创建一个固定大小的数组或使用 ArrayList

关于java - 无法从 Java 文本文件中读取信息并对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33884485/

相关文章:

c - 从文件 fgetc 读取的性能与 fread 整个字符串的性能

java - 如何解决 "Keystrokes is not abstract and does not override ab. method"

javascript - 如何获取单个数组中差异最大的元素?

javascript - 在函数中按字符串长度对数组进行排序

java - TreeSet 中的排名元素

java - 简单框架 XML : Element with Inner Text and Child Elements

java - 当输入流开始读取时,输出流开始写入

java - 将值从 JTextField 传递到 ActionListener

java - 从android按钮获取文本返回 ""

java - 使用图形从用户那里获取输入