电报Bot问题,我收到NullPointerException,但我没有找到问题

时间:2019-05-09 11:52:06

标签: java

我正在执行一种由Telegram Bot组成的“类项目”,在这种情况下,这是一个会随机给我一个要扮演的《守望先锋》角色名字的机器人(是的,它已经存在,但我不知道还有什么要做)。

目前,我有一种方法,当您使用命令/start时,会将当前花名册从.txt file加载(这就是给我NullPointerException的部分)。

另一种方法会在此时间点之后添加任何字符,并将新条目放入相同的.txt文件中,因此下次我加载程序时,该文件已经存在。

我已经根据有关NullPointerException常见错误的Internet信息更改了一些内容。我更改了循环(while (reader.readLine() != null)),因为我发现了问题,但没有,这是另外一回事,我找不到原因。

这是我的机器人课程,如果我正确理解如果键入/start,它将在底部显示消息并加载heroe列表。

private String setResponse(String originalMessage) throws IOException {
        //Según el mensaje que recibes del usuario puedes devolver una respuesta u otra


    if (originalMessage.equals("/WhatToPlay")) {
        return "This is a test";
    }

    if (originalMessage.startsWith("/addHero")) {

        HeroList.addHero(originalMessage.substring(9));
        return "The hero has been succesfully added";

    }

    if (originalMessage.equals("/help")) {

        HeroList.helper();

    }

            //heroList.loadHeroes();  --> If I take this the message bellow shows, if not it just gives me the exception,

    return ("Hi there. What would you like me to do? Type /help to get avaliable commands.");

}

这是我所有的方法代码。

    public class HeroList {

    public static ArrayList<String> heroes;

    public HeroList() {

        heroes = new ArrayList<>();
    }

    public static void loadHeroes() throws IOException {

        // A method that reads a file and adds to a list all the current heroes.

        BufferedReader heroList = new BufferedReader(new FileReader("/home/INFORMATICA/alu20918309q/Escriptori/heroList.txt"));
        String line = null;

        while ((line = heroList.readLine()) != null) {

             heroes.add(line); // --> here is where the exception points

        }
            heroList.close();

    }
    public static void addHero(String heroName) throws IOException {
        // Adds any extra heroes.
        heroes.add(heroName);

        // Adds any new heroes to a preexisting file.

        BufferedWriter updateHeroes = new BufferedWriter(new FileWriter("/home/INFORMATICA/alu20918309q/Escriptori/heroList.txt"));
        updateHeroes.newLine();
        updateHeroes.write(heroName);

        updateHeroes.close();

    }

    public static void helper() {
        // Just help messages.
        System.out.println("Type /WhatToPlay to get a random hero to play. Let us hope it is someone you know how to use.");
        System.out.println("Type /addHero to add a new hero, all heroes up untill Brigitte is added.");
    }
}

现在,它不会随机分配我的英雄列表(我一想到就会添加它),但是想法是它应该从文件中加载,并添加到列表中并保存到文件中输入了我输入的英雄,但它为我提供了空指针,当然也从不添加新条目。

请记住我正在学习,此代码将充满错误或愚蠢的代码。 感谢您的帮助。

0 个答案:

没有答案