2010-11-19 15 views
1

Ich möchte zur Laufzeit eine Zeichenfolge anhängen, aber dieser Code fügt das vorherige Wort erneut hinzu, um kein neues Wort anzufügen.Anfügen von Text in Zeichenfolge

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

Wenn ich schreibe rammen dann nach wieder Eingabetaste drücken, wenn ich es singh Ergebnis zeigen schreiben: ram ram auf der Konsole. Ich möchte Display Ram Singh als String anzeigen. `öffentliche Klasse Request_Message { { private String _Input;

public void setInput (String-Zeile) { _Input = Zeile; } public Zeichenfolge getInput() { return _Input; } `

Es nimmt die Eingabe von einem Chat-Fenster.

+0

Es als '__Customer' kein solches Objekt ist? Auch sehr seltsames Namensschema von Instanzvariablen. Großbuchstaben? –

+0

Warum verwenden Sie getCustomerQuestion für ein Objekt namens _ITChatParticipant, wenn Sie _Customer überall sonst in Ihrem Beispiel verwenden? Ist es ein Tippfehler? – Erik

Antwort

0

Verwenden Sie keine String-Verkettung. Verwenden Sie stattdessen eine geeignete StringBuffer.

private StringBuffer customerQuestion = new StringBuffer(); 

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

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

Zugegeben, das ist wahrscheinlich nicht die Ursache für Ihr besonderes Problem (was das betrifft siehe Jon Skeet Antwort), aber dies könnte ein Engpass in der Zukunft sein. A StringBuffer ist der richtige Weg, um eine String und Verkettung Text im Laufe der Zeit.

+2

Es ist überhaupt nicht klar, ob das angemessen ist, und es erklärt sicherlich nicht das Verhalten, das das OP sieht. –

+0

Es ist besser, diesen Beitrag zu löschen, bevor jemand kommt und "StringBuilder" vorschlägt. ;) –

+0

String-Verkettung ist ein "Flaschenhals" in dieser Anwendung wird sicherlich die geringste der OP-Probleme sein – fish

2

Sie haben nicht gezeigt, was Request.getInput() tut. I verdächtigen das ist das Problem. Was passiert, wenn Sie Folgendes ausführen:

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

und geben Sie die zwei verschiedenen Zeichenfolgen ein?

Wenn Sie ein kurzes, aber vollständiges Programm schreiben könnten, könnten wir definitiv herausfinden, was vor sich geht.

(Auf einer Seite beachten, wenn Sie normale Java Namenskonventionen ist es wahrscheinlich einfacher sein, für die anderen Code zu folgen.)

+0

es druckt nur die erste Zeichenfolge. es nimmt keine zweite string.please help .. – singh

+0

@singh: Es ist schwer zu helfen, da es eindeutig ein Problem in 'Request.getInput()' und Sie haben uns keine Informationen * über das, was das ist . –