代码块未触及

我正在用Java构建小型应用程序,小型游戏机制,但没什么大不了的。我有一个旨在从文件中获取数据的类。但是,当我声明要从中读取的两个类时,程序将忽略所有内容并继续。结果,当我尝试访问相应的列表时,它给了我空指针异常。以下获取数据的方法的代码:


public void getData(int l, player tmp, level le) {

        String[] dataPlayer;

        String[] dataLevel;


        try {

            //FileReader f = new FileReader(this.levelPath.concat(Integer.toString(l)));

            File f = new File(this.levelPath.concat(Integer.toString(l)));

            BufferedReader buff = new BufferedReader(new FileReader(f));

            System.out.println("Reached");


            boolean eof = false;

            while (!eof) {

                String b = buff.readLine();


                if (b == null)

                    eof = true;

                else {

                    if (b.contains("player")) {

                        dataPlayer = b.split("-");

                        for (int i = 0; i < dataPlayer.length; i++) {

                            if (i == 0)

                                continue;


                            items it = new items(dataPlayer[i]);

                            tmp.setInventory1(it);

                        }

                    }else if (b.contains("level")) {

                        dataLevel = b.split("-");

                        for (int i = 0; i < dataLevel.length; i++) {

                            if (i == 0)

                                continue;


                            items it = new items(dataLevel[i]);

                            le.setSpecific(it);

                        }

                    }

                }

            }

        }catch (IOException i) {

            i.getMessage();

        }



    }


ibeautiful
浏览 150回答 1
1回答

皈依舞

如果要保留循环代码,则可以重构代码,使其看起来像这样:public void getData(int l, player tmp, level le) {&nbsp; &nbsp; try (BufferedReader buff = new BufferedReader(new FileReader(new File(this.levelPath + l)))) {&nbsp; &nbsp; &nbsp; &nbsp; String b;&nbsp; &nbsp; &nbsp; &nbsp; while ((b = buff.readLine()) != null) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (b.contains("player")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String[] dataPlayer = b.split("-");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; items it = new items(dataPlayer[1]); //because you know that you will have an array with only 2 elements&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tmp.setInventory1(it);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }else if (b.contains("level")) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String[] dataLevel = b.split("-");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; items it = new items(dataLevel[1]); //because you know that you will have an array with only 2 elements&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; le.setSpecific(it);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }catch (IOException e) {&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();&nbsp; &nbsp; }}它比您拥有的要好一些,更易于调试和阅读。我建议您阅读有关尝试使用资源的信息。根据经验,每次打开流时,都必须将其关闭。如果您自己不打开它,则不要关闭它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java