Foros del Web » Programación para mayores de 30 ;) » Java »

Eror del Compilado o del IDE?

Estas en el tema de Eror del Compilado o del IDE? en el foro de Java en Foros del Web. Buenas, aca traigo un problema q no se si será el compilador, el JDK o quizas q cosa, pero compilo el codigo y no señala ...
  #1 (permalink)  
Antiguo 21/05/2011, 08:54
 
Fecha de Ingreso: junio-2009
Mensajes: 84
Antigüedad: 14 años, 9 meses
Puntos: 2
Eror del Compilado o del IDE?

Buenas, aca traigo un problema q no se si será el compilador, el JDK o quizas q cosa, pero compilo el codigo y no señala error, pero al momento de ejecutarlo me marca error, yo pensé q lo tenia mal escrito, asi que lo llevé en un pendrive al profe para q me revisara q cosa estaba mal, lo compilamos la 1º vez y lo ejecutamos, no tenia ni un error y funcionaba, asiq pensé q era un problema de Netbeans, ya q el programa interpreté q usamos en el notebook del profe era Eclipse, volvi a mi casa, me descargue eclipse, y al compilarlo me sale exactamente el mismo error, asiq pensé... debe ser el JDK, me descargue el mas actualizado (JDK 6 u 25)... lo mismo, me descargo el JDK 5 u 22.... lo mismo....

Simplemente no se cual es el problema, porq ya comprobé q el codigo esta bueno, pero no tengo remota idea q es lo q falla...

Este es el mensaje q me marca
Código:
run: Exception in thread "main" java.lang.StackOverflowError
        at ted.ABB.Comparar(ABB.java:18)
        at ted.ABB.Comparar(ABB.java:18)
repite el mismo mensaje cientos de veces...
Y este el codigo...
Código PHP:
import java.io.*;

public class 
ABB {
    
String palabra;
    
ABB izq,der;
    
ABB(String d){
        
palabra d;
        
izq=der=null;
    }
    
ABB insertar(ABB tString d){
        if(
== null) return new ABB(d);
        if(
Comparar(d,palabra,0)) t.izq insertar(t.izq,d);
        else 
t.der insertar(t.der,d);
        return 
t;
    }
    
boolean Comparar(String aString b,int i){
        if(
a.charAt(i) == b.charAt(i)) return Comparar(a,b,i++);
        if(
a.charAt(i) < b.charAt(i)) return true;
        return 
false;
    }
    
void inOrden(ABB t){
        if(
!=null){
            
inOrden(t.izq);
            
System.out.print(" "+t.palabra);
            
inOrden(t.der);
        }
    }
    public static 
void main(String[] argsthrows IOException {
        
BufferedReader br = new BufferedReader(new FileReader("" +
                
"C:\\Archivo.txt"));
        
ABB t = new ABB(br.readLine());
        
String p;
        while((
br.readLine())!=null){
            
t.insertar(t,p);
        }
        
t.inOrden(t);
    }

PD: Obviamente cada vez q instalo otro JDK los redefino como predeterminados a los interpretes NetBeans, JCreator, etc...

Espero q me puedan ayudar porq no se q será
  #2 (permalink)  
Antiguo 21/05/2011, 10:04
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Eror del Compilado o del IDE?

Que no de error al compilar no quiere decir que no de error al ejecutar. Al compilar solo se comprueba la sintaxis, tipos de datos, etc, y al ejecutar se comprueban errores como ese, que tiene toda la pinta de ser una llamada recursiva infinita.

No se que quieres hacer en el método comparar, pero si lo que quieres es comprobar que dos strings son iguales usa el método equals y seguro que soluciona tu problema.
  #3 (permalink)  
Antiguo 21/05/2011, 11:39
 
Fecha de Ingreso: junio-2009
Mensajes: 84
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Eror del Compilado o del IDE?

Cita:
Iniciado por _Ruben_ Ver Mensaje
Que no de error al compilar no quiere decir que no de error al ejecutar. Al compilar solo se comprueba la sintaxis, tipos de datos, etc, y al ejecutar se comprueban errores como ese, que tiene toda la pinta de ser una llamada recursiva infinita.

No se que quieres hacer en el método comparar, pero si lo que quieres es comprobar que dos strings son iguales usa el método equals y seguro que soluciona tu problema.
Gracias, pero no se trata de ello, es un arbol q ira almacenando caracteres q se iran ordenando leyendolo desde un archivo txt. Se q da igual si el compilador da error o no, cuandolo q importa es la estabilidad durante la ejecucion.

El problema era porq me marca el error cuando (segun mi logica) deberia estar todo bien escrito en el codigo.

Al final se trataba q en el metodo comparar habia q cambiar el i++ por el ++i, ya q me habian dicho q se trataba de un ciclo permanente. Por otro lado tambien daba error lo q era la comparacion de caracteres la cual la raiz iba ser el caracter "255", para ver donde va el siguiente caracter "2" tenia q comprarse con el 255 caracter por caracter, la cual la segunda consulta de comparacion me daria error, me falto poner una condicion mas para no caer en ese problema.

Igualmente muchas gracias, pude solucionarlo

Etiquetas: ide
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:33.