【问题标题】:String Input (Only outputs the first word said)字符串输入(仅输出所说的第一个单词)
【发布时间】:2013-07-01 10:57:59
【问题描述】:

我正在尝试编写一段代码,它会喊出我输入的任何内容。

所以命令是'yell'

我希望能够输入'yell (whatever I want here)',它会大声喊出来。在朋友的帮助下,我设法完成了这项工作。但由于某种原因,它只会喊出输出的第一个单词。所以我不能输入句子,因为它只会说出句子的第一个词。

这是一段代码,希望对你有所帮助。

case "npcyell":
    for (NPC n : World.getNPCs()) {
        if (n != null && Utils.getDistance(player, n) < 9) {
            String sentence = "";
            for (int i = 1; i < cmd.length; i++) {
                sentence = sentence + " " + cmd[i];
            }
            n.setNextForceTalk(new ForceTalk("[Alert] "
                    + Utils.getFormatedMessage(sentence)));
        }
    }
    return true;

【问题讨论】:

  • @spaniard 他从 1 开始,因为他不希望他的命令成为他句子的一部分 ^_^ 例如“喊这是我的句子”
  • @Jack:在您提供的代码之前的某个时间点,应该有一行或多行以“String[] cmd =”或“cmd =”(或类似名称)开头。如果您可以将这些行复制并粘贴到评论或原始问题中,它可能会为我们简化事情。
  • @Jack:基本上,从提供的代码来看,cmd[] 是一个仅包含 2 个字符串的字符串数组。 cmd[0] 似乎是命令本身,而 cmd[1] 似乎是您正在输出的“句子”。但是,您期望的字符串不止两个(cmd[2]、cmd[3] ... cmd[n])。我们需要看看 cmd[] 是在哪里创建的,所以我们可以告诉你为什么它只包含 2 个字符串。
  • 嗯。就cmd而言,一切看起来都不错。如果是这样,则问题必须出在变量“command”、方法“setNextForceTalk”或“getFormatedMessage”中。 耸耸肩
  • 我修复了它,我只是删除了格式化消息的东西。谢谢大家。

标签: java oop java-7


【解决方案1】:

好吧,我不久前做过类似的事情。您说您希望能够说“yell(text)”并让它输出任何文本。我的实现方式与您不同,但总体结果是相同的,但它可以适应您在这种情况下使用它的方式。这也假设您仅将此程序作为控制台项目运行。如果不使用您用于输入文本的任何内容更改扫描仪并将文本分配替换为
text = textInputArea.getText().toString();
并将输出语句更改为 System.out.println(text.getText().toString().substring(6,text.getText().toString().length() - 1));

Scanner s = new Scanner(System.in);
String text = s.nextLine();
if (text.startsWith("yell(") && text.endsWith(")")){
    System.out.println(text.substring(6,text.length() - 1));
}

我希望这对你有用。老实说,我希望这适用于您正在制作的程序。

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2021-12-31
    • 1970-01-01
    • 2014-12-19
    • 2013-06-09
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2021-12-13
    相关资源
    最近更新 更多