Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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 - Fatal编程技术网

Java 如何拆分服务器从客户端接收的整数数组

Java 如何拆分服务器从客户端接收的整数数组,java,arrays,Java,Arrays,客户端传递一个数组,并在其中签名 我希望服务器将整数前后拆分为两列,但我不知道如何使用整数而不是字符串,也不知道如何使用ObjectInputstream强制转换它 服务器端: package server; import java.io.*; import java.net.*; import java.util.*; public class Server { public static void main(String[] args) { try{

客户端传递一个数组,并在其中签名

我希望服务器将整数前后拆分为两列,但我不知道如何使用整数而不是字符串,也不知道如何使用ObjectInputstream强制转换它

服务器端:

package server;

import java.io.*;
import java.net.*;
import java.util.*;
public class Server {     
    public static void main(String[] args) {
        try{
            ServerSocket srvr = new ServerSocket(6013);
            Socket skt = srvr.accept();
            System.out.print("Server has connected!\n");


            ObjectInputStream in = new ObjectInputStream(skt.getInputStream());
            int[] o = (int[])in.readObject();

            System.out.println("Received this object on the server:  
                    "+Arrays.toString(o) +",");
                    skt.close();
                    srvr.close();
        } catch (Exception e) {
        }
    }
}
package client; 
import java.io.*;
import java.net.*;
import java.util.*; 
import array.*;
import java.util.Arrays;

public class Client {
    public static void main(String[] args) throws IOException {
        try {
            Socket sock = new Socket("127.0.0.1", 6013);
            int[] process;
            process = new int[]{4,5&6,6,7};
            //      int[] arrival;
            //    arrival = new int[]{4,5,6,7};
            //   int[] burst;
            //   burst = new int[]{4,5,6,7};

            ObjectOutputStream out = new    
                    ObjectOutputStream(sock.getOutputStream());
            out.writeObject(process);


        }
        catch(Exception e)
        {}
    }
}
客户端:

package server;

import java.io.*;
import java.net.*;
import java.util.*;
public class Server {     
    public static void main(String[] args) {
        try{
            ServerSocket srvr = new ServerSocket(6013);
            Socket skt = srvr.accept();
            System.out.print("Server has connected!\n");


            ObjectInputStream in = new ObjectInputStream(skt.getInputStream());
            int[] o = (int[])in.readObject();

            System.out.println("Received this object on the server:  
                    "+Arrays.toString(o) +",");
                    skt.close();
                    srvr.close();
        } catch (Exception e) {
        }
    }
}
package client; 
import java.io.*;
import java.net.*;
import java.util.*; 
import array.*;
import java.util.Arrays;

public class Client {
    public static void main(String[] args) throws IOException {
        try {
            Socket sock = new Socket("127.0.0.1", 6013);
            int[] process;
            process = new int[]{4,5&6,6,7};
            //      int[] arrival;
            //    arrival = new int[]{4,5,6,7};
            //   int[] burst;
            //   burst = new int[]{4,5,6,7};

            ObjectOutputStream out = new    
                    ObjectOutputStream(sock.getOutputStream());
            out.writeObject(process);


        }
        catch(Exception e)
        {}
    }
}

由于你是新来的,我会尽量详细回答你

首先,数组是一个整数数组。您可能认为数组中的
&
符号是数组中的实际符号,但您错了。数组仅由整数组成

那么5和6会发生什么呢? 贾蒙已经说过5&6=4。这听起来很奇怪,但这是真的,因为符号是一种算术和逻辑运算。这一个取2个二进制数,
每个位加在一起,如下表所示:

if 0 and 0 => 0
if 0 and 1 => 0
if 1 and 0 => 0
if 1 and 1 => 1
二进制中的5由0101表示

二进制中的6由0110表示

5和6的算术和为0100(二进制),等于十进制值中的4

要回答您的问题:如果要在到达服务器时拆分阵列,请选择不属于您正在寻址的集合的某个整数:例如,如果您知道整数始终小于10,请选择100:

int[] process;
process = new int[]{4, 5, 100, 6, 6, 7};
在服务器端,只要在给定“令牌100”的情况下拆分阵列即可

int [] a = { 4,5,100,6,6,4 };
int index = -1;
for (int i = 0; i < a.length; i++) {
    if (a[i] == 100) {
        index = i;
        break;
    }
}
int [] aBefore = new int[index];
int [] aAfter = new int[a.length-index-1];
System.arraycopy(a, 0, aBefore, 0, index);
System.arraycopy(a, index+1, aAfter, 0, a.length-index-1);
int[]a={4,5100,6,6,4};
int指数=-1;
for(int i=0;i
您能显示您的输入和预期输出吗?你有
{4,5&6,6,7}
你需要用它做什么<代码>{4,5,6,6,7}?
(int)(5&6)==0101&0110==4
,这将转换为4并作为
4
而不是
5&6