当前位置: 首页 > 知识库问答 >
问题:

为什么我的java函数没有从另一个类的输出调用?

施辉
2023-03-14

我正在编写一个不和谐机器人,在私人服务器中使用,只是为了混日子。这是我第一次使用java。我正在使用不和谐JDA库来编码机器人。然而,我认为这不是主要问题。

对于如何从我创建的单独类中的特定方法中提取输出,我感到困惑。

我试图从一个名为Color.java的单独类中的公共String方法中拉出一个String到一个名为Commands.java.的文件中。

这是我的命令代码。JAVA这不是主文件,而是与问题相关的文件,更具体地说是此代码的最后一个else if{}。

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();
        }
    }
}

我打算从这个文件中提取最后一个“如果”,olor.java,从数组列表“白色”中挑选出一串随机的文本,并将其输出到不和谐的聊天频道。

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);

    }
}

我的终端在编译时输出此错误,但它仍然成功并运行:

white : The term 'white' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try      
again.
At line:1 char:1
+ white c:; cd 'c:\Users\Colin\Dylan and Colin'; & 'c:\Users\Colin\.vsc ...
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: (white:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

如果用户试图对bot说“白色”,它不会用我想要的文本字符串进行响应。

我对Java还是新手。我做错了什么?

共有2个答案

斜光耀
2023-03-14

找到的解决方案:在Color.java内部,我需要将公共字符串白色(){}更改为公共字符串白色(字符串... args){}。

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);

    }
}
冯祺
2023-03-14

我去看看命令和信息是否正常?无论如何我觉得你的问题就在这里

 else if (args [0-100].equalsIgnoreCase("white"))

难道不是这样吗?

else if (args [0].equalsIgnoreCase("white"))
 类似资料:
  • 我在我的单元测试中使用了sinon间谍。我正在测试的函数调用了一次间谍函数,但sinon坚持说它根本没有调用它。 正在测试的代码: 还有我的单元测试: 来自西农的消息: < li>draughts应检测显示方法:AssertError:预期displayBoard将被调用一次,但在object . assert .[as called once](node _ modules \ sinon \

  • 问题内容: 我无法从另一个类Menu.swift调用GameViewController.swift中的函数。我这样调用该函数: 这是我要调用的函数: } 我在菜单类内的GameViewController.showLeaderboard()行中出现编译器错误“调用中的参数#1缺少参数”,但我不理解编译器期望的参数类型,因为我不需要任何声明就声明了该函数参数。 谢谢 问题答案: 在您定义为方法而不

  • 我正在尝试创建一个21点模拟器。在向玩家和庄家发牌之前,我需要洗牌。是一个无效函数,是类中的卡类型。职业存储从职业中发出的牌。在游戏开始时,我需要向玩家和庄家发两张牌。当我尝试在类访问 的成员函数时,我收到错误消息“调用不带对象参数的非静态成员函数”。调用成员函数的正确方法是什么?我真的对语法感到困惑。

  • 我不明白为什么下面的代码会打印两次。我以为应该是个人和学生。当通过“a”对象调用printPerson()内部的getInfo()时,为什么要调用Person类内部的一个,为什么不调用Student类中的一个?提前谢谢。

  • 我正在尝试构建一个简单的Web应用程序,它接受大量的二进制输入,并计算一个布尔公式,然后输出。我做错了什么? null null