我是这个论坛的新手,但我无法解决这个问题。 我有这段代码:
while (archivo.ready()) {
iCont++;
linea = archivo.readLine();
if (tryParse(linea) == null) {
ContribuyenteT<String> nuevoCont = new ContribuyenteT();
nuevoCont.setDato(linea);
wrSalida.println("EL CONTRIBUYENTE " + nuevoCont.getDato() + " HA INGRESADO A LA SALA DE ESPERA");
nuevoCont.setID(iCont);
wrSalida.println("SE HA ASIGNADO EL CODIGO " + nuevoCont.getID() + " AL CONTRIBUYENTE IDENTIFICADO COMO " + nuevoCont.getDato());
NodoCT<String> nuevoNodo = new NodoCT();
nuevoNodo.setContribuyente(nuevoCont);
objSalaEspera.Push(nuevoNodo);
}
else {
ContribuyenteT<Integer> nuevoCont = new ContribuyenteT();
nuevoCont.setDato(Integer.parseInt(linea));
wrSalida.println("EL CONTRIBUYENTE " + nuevoCont.getDato() + " HA INGRESADO A LA SALA DE ESPERA");
nuevoCont.setID(iCont);
wrSalida.println("SE HA ASIGNADO EL CODIGO " + nuevoCont.getID() + " AL CONTRIBUYENTE IDENTIFICADO COMO " + nuevoCont.getDato());
NodoCT<Integer> nuevoNodo = new NodoCT();
nuevoNodo.setContribuyente(nuevoCont);
objSalaEspera.Push(nuevoNodo);
}
}
System.gc();
if (objSalaEspera.getCantidad() < 10) {
objCaja1 = new ColaC();
NodoCT Aux = objSalaEspera.Pop();
while (Aux != null) {
objCaja1.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 1");
Aux = objSalaEspera.Pop();
}
}
else {
if (objSalaEspera.getCantidad() < 26) {
objCaja1 = new ColaC();
objCaja2 = new ColaC();
NodoCT Aux = objSalaEspera.Pop();
while (Aux != null) {
if (objCaja1.getCantidad() <= objCaja2.getCantidad()) {
objCaja1.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 1");
}
else {
objCaja2.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 2");
}
Aux = objSalaEspera.Pop();
JOptionPane.showMessageDialog(this, "Llega");
}
}
else {
if (objSalaEspera.getCantidad() < 41) {
objCaja1 = new ColaC();
objCaja2 = new ColaC();
objCaja3 = new ColaC();
NodoCT Aux = objSalaEspera.Pop();
while (Aux != null) {
if (objCaja1.getCantidad() <= objCaja2.getCantidad()) {
if (objCaja1.getCantidad() <= objCaja3.getCantidad()) {
objCaja1.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 1");
}
else {
objCaja3.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 3");
}
}
else {
if (objCaja2.getCantidad() <= objCaja3.getCantidad()) {
objCaja2.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 2");
}
else {
objCaja3.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 3");
}
}
Aux = objSalaEspera.Pop();
JOptionPane.showMessageDialog(this, "Llega");
}
}
else {
objCaja1 = new ColaC();
objCaja2 = new ColaC();
objCaja3 = new ColaC();
objCaja4 = new ColaC();
NodoCT Aux = objSalaEspera.Pop();
while (Aux != null) {
if (objCaja1.getCantidad() <= objCaja2.getCantidad()) {
if (objCaja1.getCantidad() <= objCaja3.getCantidad()) {
if (objCaja1.getCantidad() <= objCaja4.getCantidad()) {
objCaja1.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 1");
}
else {
objCaja4.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 4");
}
}
else {
if (objCaja3.getCantidad() <= objCaja4.getCantidad()) {
objCaja3.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 3");
}
else {
objCaja4.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 4");
}
}
}
else {
if (objCaja2.getCantidad() <= objCaja3.getCantidad()) {
if (objCaja2.getCantidad() <= objCaja4.getCantidad()) {
objCaja2.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 2");
}
else {
objCaja4.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 4");
}
}
else {
if (objCaja3.getCantidad() <= objCaja4.getCantidad()) {
objCaja3.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 3");
}
else {
objCaja4.Push(Aux);
wrSalida.println("EL CONTRIBUYENTE " + Aux.getContribuyente().getID() + " SE HA ASIGNADO A LA CAJA 4");
}
}
}
Aux = objSalaEspera.Pop();
JOptionPane.showMessageDialog(this, "Llega");
}
}
}
}
我在一个队列上执行普通弹出,然后将节点传递到另一个队列。 但是当我运行程序(在NetBeans中)时,它会在第4个弹出窗口停止并卡住 就好像会有一个无限循环。我的示例队列有9个节点,但我不知道为什么它会停止。我已尝试使用3个节点的队列,但它不会停止。 我的队列代码如下:
public class ColaC {
NodoCT Head;
short shCantidad;
public ColaC() {
Head = null;
shCantidad = 0;
}
public short getCantidad() {
return shCantidad;
}
public void Push(NodoCT pNuevo) {
shCantidad++;
if (Head == null) {
Head = pNuevo;
Head.setSiguiente(null);
}
else {
NodoCT Aux;
Aux = Head;
while (Aux.getSiguiente() != null) {
Aux = Aux.getSiguiente();
}
Aux.setSiguiente(pNuevo);
}
}
public NodoCT Pop() {
if (Head != null) {
NodoCT Aux = Head;
Head = Head.getSiguiente();
return Aux;
}
else {
return null;
}
}
所有这些都是用Java编程的。 我希望能够解释我的自我......我对Java有点新意,所以所有人都对它表示赞赏。顺便说一句,如果我的英语不好,那是因为我来自LatinAmeria,哈哈。 再次感谢。
我的节点代码是:
public class NodoCT<T> {
ContribuyenteT objContribuyente;
NodoCT Siguiente;
public NodoCT() {
objContribuyente = null;
Siguiente = null;
}
public void setSiguiente(NodoCT<T> pSiguiente) {
Siguiente = pSiguiente;
}
public NodoCT getSiguiente() {
return Siguiente;
}
public void setContribuyente(ContribuyenteT<T> pContribuyente) {
objContribuyente = pContribuyente;
}
public ContribuyenteT<T> getContribuyente() {
return objContribuyente;
}
}