为什么我的java函数没有从另一个类的输出调用?
我正在编写一个discord bot,在一个私有服务器中使用,只是为了搞乱。这是我第一次使用java。我正在使用Discord JDA库对bot进行编码。然而,我不认为这是主要问题 对于如何从我创建的单独类中的特定方法中提取输出,我感到困惑 我试图将一个字符串从名为Color.java的单独类中的公共字符串方法拉入名为Commands.java的文件中。此字符串将通过使用带有随机数生成器的数组列表进行随机 这是我的Commands.java代码。这不是主文件,而是与问题相关的文件,更具体地说是此代码的最后一个else if{}为什么我的java函数没有从另一个类的输出调用?,java,discord,discord-jda,Java,Discord,Discord Jda,我正在编写一个discord bot,在一个私有服务器中使用,只是为了搞乱。这是我第一次使用java。我正在使用Discord JDA库对bot进行编码。然而,我不认为这是主要问题 对于如何从我创建的单独类中的特定方法中提取输出,我感到困惑 我试图将一个字符串从名为Color.java的单独类中的公共字符串方法拉入名为Commands.java的文件中。此字符串将通过使用带有随机数生成器的数组列表进行随机 这是我的Commands.java代码。这不是主文件,而是与问题相关的文件,更具体地说是此
public class Commands extends ListenerAdapter {
@Override
public void onGuildMessageReceived(GuildMessageReceivedEvent event) {
String[] args = event.getMessage().getContentRaw().split(" ");
if (args[0].equalsIgnoreCase(bot.prefix + "info")) {
event.getChannel().sendTyping().queue();
event.getChannel().sendMessage("This is a test info description").queue();
}
else if (args [0].equalsIgnoreCase(bot.prefix + "ping")) {
long ping = event.getJDA().getGatewayPing();
event.getChannel().sendMessage(ping + "ms").queue();
}
else if (args [0-100].equalsIgnoreCase("white")){
Race newColorobj = new Color();
String white_test = newColorobj.white();
event.getChannel().sendMessage(white_test + ".").queue();
}
}
}
我打算从这个文件Color.java中提取最后一个“elseif”,从数组列表“white”中选择一个随机的文本字符串,并将其输出到discord聊天频道
public class Color {
Random rand = new Random();
int upperbound = 1;
int int_random = rand.nextInt(upperbound);
public String white() {
ArrayList<String> white = new ArrayList<String>();
white.add("This is a test");
return white.get(int_random);
}
}
如果用户试图对bot说“白色”,它不会用我想要的文本字符串进行响应
我对Java还是新手。我做错了什么?我要检查命令ping和info是否正常工作?无论如何,我认为你的问题就在这里
else if (args [0-100].equalsIgnoreCase("white"))
难道不是这样吗
else if (args [0].equalsIgnoreCase("white"))
找到了解决方案:在Color.java内部,我需要将公共字符串white(){}更改为公共字符串white(String…args){}
公共类颜色{
Random rand=新的Random();
int上限=1;
int_random=rand.nextInt(上限);
公共字符串白色(字符串…参数){
ArrayList white=新的ArrayList();
白色。添加(“这是一项测试”);
返回white.get(int_random);
}
}
如果执行的OP会得到一个ArrayIndexOutOfBoundsException
,但是没有,所以这是一个问题,但不是OP问题的答案,我认为使用[0-100]可以在多达100个参数中查找关键字。因为[0]表示它只查看消息中的第一个单词。@colinkhoe no.args[0-100]
与args[-100]
相同,任何负索引都会抛出索引越界异常。很高兴知道。我通过使用“I”循环并使用args[I]读取接收到的消息中的每个单词来解决这个问题。错误消息与问题中的代码没有关联。请显示相关的类别和代码。
else if (args [0].equalsIgnoreCase("white"))
public class Color {
Random rand = new Random();
int upperbound = 1;
int int_random = rand.nextInt(upperbound);
public String white(String... args) {
ArrayList<String> white = new ArrayList<String>();
white.add("This is a test");
return white.get(int_random);
}
}