我正在执行一种由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.");
}
}
现在,它不会随机分配我的英雄列表(我一想到就会添加它),但是想法是它应该从文件中加载,并添加到列表中并保存到文件中输入了我输入的英雄,但它为我提供了空指针,当然也从不添加新条目。
请记住我正在学习,此代码将充满错误或愚蠢的代码。 感谢您的帮助。