【问题标题】:How do i use the "sendMessage()" code to send Doubles?如何使用“sendMessage()”代码发送 Doubles?
【发布时间】:2019-09-22 15:04:22
【问题描述】:

我正在尝试为我的不和谐机器人创建一个计算器命令!

在这段代码中,我尝试将用户输入转换为双精度(例如用户输入:*calculate 1 + 1)并发送包含双精度值的消息! 但是这不起作用,所以我尝试将双精度转换回字符串!

public void onMessageReceived(MessageReceivedEvent event) {
                Message message = event.getMessage();
            String content = message.getContentRaw();
            MessageChannel channel;
            channel = event.getChannel();                       
                 String[] args = content.split(" ");



if (args[0].equalsIgnoreCase("!calculate")) {
                if (args.length == 1) {
                    channel.sendMessage("error message").queue();
                }else  {
                  String input = content;
                  input = input.replace(args[0], "");
                  double result = Double.parseDouble(text);
                  channel.sendMessage(result).queue();
                }
                }
}

在我在结果和输出之间放入一个 double.toString 之后,因为它不会打印双精度。

              String output = Double.toString(result);
              channel.sendMessage(output).queue();

第一次尝试没有输出! 第二个有一个“数字格式异常”! 我该如何解决这个问题?

【问题讨论】:

  • 理想情况下,您应该始终捕获错误的数字字符串。因此,就像您已经为空字符串所做的那样抛出错误消息,您还应该将 Double.parseDouble(text); 放在 try-catch 块中,如果第二个参数不是正确的数字,则返回错误消息。

标签: java discord-jda


【解决方案1】:

如果您遇到数字格式异常,您可能正在尝试转换包含其他字符的字符串。在将其转换为双精度之前尝试打印“输出”并查看它的外观。

【讨论】:

  • 除数字外,字符串还包含操作数(+、-、*、/)
  • @DorusBlanken 好吧,您从未说过该字符串包含数学公式...我不明白您为什么只是尝试将其解析为双精度值。这应该如何工作,这种方法需要一个数字。您必须为您的情况编写自己的公式解析器。或者您保持简单,只使用现有的 Java 数学评估器之一。只要搜索“java数学公式解析器”,就有几十个库
  • @DorusBlanken 你应该在你的问题中澄清这一点
猜你喜欢
  • 2017-05-12
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
相关资源
最近更新 更多