仅打印数组的某些参数

时间:2019-01-07 15:16:09

标签: java sockets object parameters println

我有一个Java套接字,可将参数从客户端发送到服务器。我希望只能显示发送的一些参数,而不是全部。目前,所有这些都通过println显示。例如;在服务器端,我只想显示“年龄”而不是所有参数

我的客户代码:

ObjectOutputStream oos;
ObjectInputStream ois;
Socket socket;
int[] data = { lotsize, bedrooms, localSchools, age, garages, bathrooms };

try {
    socket = new Socket("127.0.0.1", 8888);
    oos = new ObjectOutputStream(socket.getOutputStream());
    ois = new ObjectInputStream(socket.getInputStream());
    oos.writeObject(data);
    oos.flush();
    ois.close();
    oos.close();
} catch (IOException e) {
    System.out.println(e.getMessage());
}

我的服务器代码:

while (true) {
    int[] data = (int[])ois.readObject();
    oos.close();
    ois.close();

    for (int d : data)
        System.out.println(d);

    break;
}

2 个答案:

答案 0 :(得分:1)

对于您的请求,我认为没有令人满意的解决方案……没有任何方法可以区分数组服务器端的整数。您可以做的是为年龄指定一个特定的索引,例如data [3] =年龄,然后简单地为println(data [3])。如果您确实选择此路线,请确保已记录在案。

答案 1 :(得分:0)

声明Map并放置值。这只是一个示例,我不知道您的数据结构应如何。

    Map<String, Integer> data = new HashMap<>();
    data.put("lotsize", 1);
    data.put("bedrooms", 1);
    data.put("localSchools", 1);
    data.put("age", 2);
    data.put("garages", 1);
    data.put("bathrooms", 1);

然后像现在一样书写,只是将阅读内容更改为:

Map<String, Integer> data = (Map<String, Integer>) ois.readObject();

现在您可以通过以下方式打印年龄:

System.out.println(data.get("age"));