【问题标题】:Getting a line with a lot of empty spaces得到一个有很多空格的行
【发布时间】:2014-09-29 00:53:43
【问题描述】:

我编写了一个通过 UDP 向客户端发送数据的程序,但由于某种原因,我得到的一行有很多空格

例子:

line1:威廉莎士比亚 3432 Green Street Greenville 450-122-3435

第 2 行:

你知道我为什么要买这些吗?有些东西告诉我它与 buffer.length 有关,但我不确定。

    DatagramSocket socket1 = new DatagramSocket();
    InetAddress IP1 = msg.getAddress();
    int port = msg.getPort();

    Set set = (obj.getMAP()).entrySet();
    Iterator i = set.iterator();
    String total = "";

    while(i.hasNext()) {
        Map.Entry<String, ArrayList<Person>> me = (Map.Entry<String, ArrayList<Person>>)i.next();
        Iterator<Account> it = (me.getValue()).iterator();
        while(it.hasNext())
        {
            Account per = it.next();
            String temp = per.getName() + " " + per.getAddress() + " " + 
                          per.getPhoneNumber() + "\n";                      
            total += temp;
        }
    }       

    byte[] buffer = total.getBytes();
    DatagramPacket reply = new DatagramPacket(buffer, buffer.length, IP1, port);
    socket1.send(reply);
    socket1.close();

【问题讨论】:

  • 第 2 行要做什么?
  • 有很多空格,比如 100 之类的。它弄乱了我的整个程序。

标签: java sockets io udp


【解决方案1】:

您提到的第 2 行有空格并没有真正包含空格。 因为这个,你得到了额外的一行:

temp = per.getName() + " " + per.getAddress() + " " + per.getPhoneNumber() + "\n";
                                                                               ^

你应该做的是有一个条件来确定这个Account是否不是最后一个,然后再附加\n

temp = per.getName() + " " + per.getAddress() + " " + per.getPhoneNumber();
if(it.hasNext()) {
    temp += "\n";
}

希望这会有所帮助! :)

【讨论】:

  • 我不仅得到了额外的行,而且还得到了无穷无尽的尾随空格。
猜你喜欢
  • 2016-11-06
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2019-06-29
  • 2011-02-18
相关资源
最近更新 更多