Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复java数组索引越界错误_Java_Arrays_Client Server - Fatal编程技术网

如何修复java数组索引越界错误

如何修复java数组索引越界错误,java,arrays,client-server,Java,Arrays,Client Server,客户端-服务器聊天系统作为服务器启动服务器,客户端连接到服务器。当客户端尝试连接到服务器时,会成功,但阵列处于断开连接状态。 捕获(例外情况除外){ append(“失去连接。\n”); 例如printStackTrace(); clientOutputStreams.remove(客户端); 不管怎么说,要修好它吗 服务器端代码 public ClientHandler(Socket clientSocket, PrintWriter user) { // new i

客户端-服务器聊天系统作为服务器启动服务器,客户端连接到服务器。当客户端尝试连接到服务器时,会成功,但阵列处于断开连接状态。

捕获(例外情况除外){
append(“失去连接。\n”);
例如printStackTrace();
clientOutputStreams.remove(客户端);

不管怎么说,要修好它吗

服务器端代码

        public ClientHandler(Socket clientSocket, PrintWriter user) {
    // new inputStreamReader and then add it to a BufferedReader
                    client = user;
        try {
            sock = clientSocket;
            InputStreamReader isReader = new InputStreamReader(sock.getInputStream());
            reader = new BufferedReader(isReader);
        } // end try
        catch (Exception ex) {
            outputTextArea.append("Error beginning StreamReader. \n");
        } // end catch

    } // end ClientHandler()

    public void run() {
                    String message, connect = "Connect", disconnect = "Disconnect", chat = "Chat" ;
        String[] data;

        try {
            while ((message = reader.readLine()) != null) {

                outputTextArea.append("Received: " + message + "\n");
                data = message.split(":");
                                    for (String token:data) {

                                    outputTextArea.append(token + "..\n");

                                    }

                                    if (data[2].equals(connect)) {

                                            tellEveryone((data[0] + ":" + data[1] + ":" + chat));
                                            userAdd(data[0]);

                } else if (data[2].equals(disconnect)) {

                                        tellEveryone((data[0] + ":has disconnected." + ":" + chat));
                                        userRemove(data[0]);

                } else if (data[2].equals(chat)) {

                                        tellEveryone(message);

                } else {
                                        outputTextArea.append("No Conditions were met. \n");
                                    }


             } // end while
        } // end try
        catch (Exception ex) {
            outputTextArea.append("Lost a connection. \n");
                            ex.printStackTrace();
                            clientOutputStreams.remove(client);
        } // end catch
    } // end run()
    public void userAdd (String data) {
        String message, add = ": :Connect", done = "Server: :Done", name = data;
        outputTextArea.append("Before " + name + " added. \n");
        userlist.add(name);
        outputTextArea.append("After " + name + " added. \n");
        String[] tempList = new String[(userlist.size())];
        userlist.toArray(tempList);

            for (String token:tempList) {

                message = (token + add);
                tellEveryone(message);
            }
            tellEveryone(done);
}

public void userRemove (String data) {
            String message, add = ": :Connect", done = "Server: :Done", name = data;
            userlist.remove(name);
            String[] tempList = new String[(userlist.size())];
    userlist.toArray(tempList);

            for (String token:tempList) {

                message = (token + add);
                tellEveryone(message);
            }
            tellEveryone(done);
}

    public void tellEveryone(String message) {
// sends message to everyone connected to server
    Iterator it = clientOutputStreams.iterator();

    while (it.hasNext()) {
        try {
            PrintWriter writer = (PrintWriter) it.next();
            writer.println(message);
            writer.flush();
                            outputTextArea.setCaretPosition(outputTextArea.getDocument().getLength());

        } // end try
        catch (Exception ex) {
            outputTextArea.append("Error telling everyone. \n");
        } // end catch
    } // end while
} // end tellEveryone()
错误

java.lang.ArrayIndexOutOfBoundsException: 2
at chatsystemserver.ServerSide$ClientHandler.run(ServerSide.java:55)
at java.lang.Thread.run(Thread.java:745)

知道如何修复数据[2]吗?

检查数组是否至少有3个元素。也就是说,更改

if (data[2].equals(connect)) {


检查数组是否至少有3个元素。即,更改

if (data[2].equals(connect)) {


检查数组是否至少有3个元素。即,更改

if (data[2].equals(connect)) {


检查数组是否至少有3个元素。即,更改

if (data[2].equals(connect)) {


你的问题真的很难理解,但基本上是完全正确的从不尝试访问数组中大于其长度的索引你的问题确实很难理解,但基本上是完全正确的从不尝试访问数组中大于其长度的索引你的问题真的很难理解,b但是,基本上,只是要认真,不要试图访问数组中大于其长度的索引。你的问题很难理解,但基本上,只是认真,不要试图访问数组中大于其长度的索引