我有一个错误:线程中的异常;螺纹-0“;java.lang.NullPointerException
我需要通过套接字将信息(ip+nombre+ventas)从客户端发送到服务器,但它不起作用。我必须把这些信息放在树集合中。我有一个包含两个java类的项目,一个是this,另一个是ObjServidor,其中实现了getventas、getip、getnombre等函数。你能帮我吗我有一个错误:线程中的异常;螺纹-0“;java.lang.NullPointerException,java,netbeans,collections,nullpointerexception,treeset,Java,Netbeans,Collections,Nullpointerexception,Treeset,我需要通过套接字将信息(ip+nombre+ventas)从客户端发送到服务器,但它不起作用。我必须把这些信息放在树集合中。我有一个包含两个java类的项目,一个是this,另一个是ObjServidor,其中实现了getventas、getip、getnombre等函数。你能帮我吗 public class HILO extends Thread { private final Socket s; private final TreeSet<ObjServidor>
public class HILO extends Thread {
private final Socket s;
private final TreeSet<ObjServidor> O;
HILO(Socket s, TreeSet<ObjServidor> O) {
this.s = s;
this.O = O;
}
@Override
public void run() {
try {
ObjectInputStream pw = new ObjectInputStream(
s.getInputStream());
// RECORRER LA COLECCION EXTRAYENDO NOMBRE Y VENTAS Y CON EL SOCKET LA IP
// CREO UNA INSTANCIA PARA CADA ELEMENTO QUE RECIBIMOS NEW
// HACEMOS EL PUT TODO MEDIANTE UN ITERADOR
// SACAMOS EL CONTENIDO DE LA COLECCION
String ip, nombre;
int ventas;
TreeSet<ObjServidor> servidorHS = new TreeSet<ObjServidor>();
Iterator<ObjServidor> it = O.iterator();
while (it.hasNext()) {
ObjServidor aux2;
aux2 = it.next();
nombre = aux2.getNombre();
ventas = aux2.getVentas();
ip = s.getRemoteSocketAddress().toString();
}
ObjServidor aux []=new ObjServidor[10];
for(int i=0;i<10;i++)
{
aux[i]= new ObjServidor();
}
for(int i=0;i<aux.length;i++)
{
servidorHS.add(aux[i]);
}
it = servidorHS.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
System.out.println("Peticiones recibidas ");
pw.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
公共类HILO扩展线程{
私人终端插座;
私人终审法院;
HILO(插座s,树集O){
这个.s=s;
这个。O=O;
}
@凌驾
公开募捐{
试一试{
ObjectInputStream pw=新ObjectInputStream(
s、 getInputStream());
//外部名称、阀门和仪表板插座的记录
//这是一个全新的概念
//这是一个很好的办法
//学院学院
字符串ip,nombre;
内文塔斯;
TreeSet servidorHS=新的TreeSet();
迭代器it=O.Iterator();
while(it.hasNext()){
ObjServidor aux2;
aux2=it.next();
nombre=aux2.getNombre();
ventas=aux2.getVentas();
ip=s.getRemoteSocketAddress().toString();
}
ObjServidor aux[]=新的ObjServidor[10];
对于(int i=0;i错误在哪里?发布错误堆栈跟踪您的代码没有任何意义,它甚至不读取对象流。相反,您创建了一个空树集,试图对其进行迭代。您确定发送方的IP不是每个套接字一次,而是多次。您使用了无意义的类名,例如ObjServidor
(哪些对象?)和HILO
(西班牙语单词表示线程?)以及错误的变量名(s
,O
),混淆代码。您创建固定长度数组,就好像您事先知道每个树集的大小一样。您使用老式的迭代器而不是现代的for循环。我可以继续讲下去。是的,我同意堆栈跟踪丢失了。