【问题标题】:Appending text in string在字符串中附加文本
【发布时间】:2010-11-19 07:59:08
【问题描述】:

我想在运行时附加一个字符串,但是这段代码再次添加了前一个单词而不是附加新单词。

客户.java:

public String getCustomerQuestion() {
  return CustomerQuestion;
 }
public void setCustomerQuestion(String customerQuestion) {
CustomerQuestion = customerQuestion;
}
public void appendmessage(String msg){
CustomerQuestion = CustomerQuestion +" "+ msg;
}

Main.java:

Customer  _Customer =new Customer();
Request_Message Request= new Request_Message;
_Customer.setCustomerQuestion(Request.getInput());
String _string=Request.getInput();
_Customer.appendmessage(_string);
String str=__Customer.getCustomerQuestion();
System.out.println("now new Question() is"+str);

当我写 ram 时,当我写 singh 时再次按下回车,它会显示结果:控制台上的 ram ram。 我想将显示 ram singh 显示为字符串。 `公共类Request_Message { { 私有字符串_Input;

public void setInput(字符串行) { _输入=线; } 公共字符串 getInput() { 返回_输入; }`

它接受来自聊天窗口的输入。

【问题讨论】:

  • 没有__Customer这样的对象吗?实例变量的命名方案也很奇怪。大写字母?
  • 在示例中的其他任何地方都使用 _Customer 时,为什么要对名为 _ITChatParticipant 的对象使用 getCustomerQuestion?是不是笔误?

标签: java string


【解决方案1】:

你还没有展示Request.getInput() 做了什么。我怀疑这就是问题所在。如果你运行会发生什么:

System.out.println(Request.getInput());
System.out.println(Request.getInput());

然后输入两个不同的字符串?

如果您可以发布一个简短但完整的程序,我们绝对可以弄清楚发生了什么。

(附带说明,如果您遵循正常的 Java 命名约定,其他人可能更容易遵循您的代码。)

【讨论】:

  • @singh:这很难提供帮助,因为这显然是 Request.getInput() 中的一个问题,而您根本没有向我们提供任何信息。跨度>
【解决方案2】:

不要使用字符串连接。请改用正确的StringBuffer。

private StringBuffer customerQuestion = new StringBuffer();

public void appendmessage(String msg){
    customerQuestion.append(msg);
}

public String getCustomerQuestion() {
    return customerQuestion.toString();
}

当然,这可能不是您的具体问题的原因(关于这件事,请参阅 Jon Skeet 的回答),但这可能是未来的瓶颈。 StringBuffer 是拥有 String 并随着时间的推移将文本连接到它的正确方法。

【讨论】:

  • 完全不清楚这是否合适,当然也不能解释 OP 看到的行为。
  • 在有人来建议StringBuilder之前最好删除这个帖子。 ;)
  • 字符串连接在这个应用程序中是一个“瓶颈”,这肯定是最少的 OPs 问题
猜你喜欢
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多