我遇到循环问题。在我的项目中,我通过套接字发送评论。 我知道我的一个循环出了问题,因为在客户端最后一条评论仍然打印出来。
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while(true){
out.println(rel.getCommentary());
}
getCommentary是一个带有来自JTextField
的当前评论的方法客户端循环
in = new Scanner(socket.getInputStream());
while(in.hasNextLine()){
showCommentary(in.nextLine());
}
服务器GUI
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == addComment){
String comment=commentField.getText();
rel.setCommentaryText(comment);
panel4.setBackground(Color.green);
}
客户端
private void showCommentary(String text){
showArea.append(text+ "\n");
showArea.setCaretPosition(showArea.getDocument().getLength());
}
关系类
public class Relation{
String relation;
public Relation() {
}
public void setCommentaryText(String relation){
this.relation= relation;
}
public String getCommentary(){
return this.relation;
}
}
答案 0 :(得分:0)
好吧,在Server
中,你应该有一个打印评论的方法:
public void printCommentary(String commentary) {
out.println(commentary);
}
在ServerGUI
中,当您设置评论时:
if (source == addComment) {
String comment= commentField.getText();
//call the server's print method we just wrote, only once, no loop!
server.printCommentary(comment);
}
您的错误是while(true)
循环一直在执行。它永远打印到您最后一个评论的输出流。你不应该这样做。