Resultado cero o uno

Foros de Programación Forums Java Java Básico Resultado cero o uno

This topic contains 8 respuestas, has 3 participantes, and was last updated by  garusis hace 1 year.

Viewing 9 posts - 1 through 9 (of 9 total)
  • Autor
    Mensajes
  • #6513

    al2001
    Member

    Deseo que este metodo de como resultado el numero 1 o cero 0 dependiendo del ID cliente “CodigoCliente” pero solo me da por resultado 0; este es el codigo:

    public int ExisteCliente(String CodigoCliente) {
    int Existe =1;
     
            try {
                fr = new FileReader("Huesped.txt");
                br = new BufferedReader(fr);
     
                String Linea = "";
     
                while ((Linea = br.readLine()) != null) {
     
                    int Pos = Linea.indexOf("-");
                    String Cod = Linea.substring(0,Pos);
     
                 if (this.CodigoCliente.equals(Cod)) {
                     Existe = 0;
                     break;
                    }
                }
                fr.close();
            } catch (Exception ex) {
                System.out.println(" Cliente.java: " );
            }
            System.out.println("Final Clase Cliente "+Existe);
     
            return Existe;
        }
    #7704

    garusis
    Member

    Para empezar, el primer problema que tienes es que estas usando “this” para hacer la comparacion…

    cambia if (this.CodigoCliente.equals(Cod))
    por if (CodigoCliente.equals(Cod))

    la cuestion es que la clase en la que estas implementando el metodo tiene un atributo con el nombre CodigoCliente, que es el mismo nombre del parametro que recibe el metodo… asi que al hacer “this.CodigoCliente” estas comparando Cod con el atributo de la clase y no con el parametro del metodo… aun asi, pueden existir otros problemas, que creo que surgiran por que no estas usando orientacion a objetos, ya que el metodo public int ExisteCliente(String CodigoCliente) no deberia estar en la clase Cliente…

    #7705

    al2001
    Member

    Gracias por la respuesta ya que fuistes el unico que pudo encontrarlo; anoche encontre el error con “this.CodigoCliente”, utilice getCodigoCliente y solo asi funciona. Una pregunta: Porque piensas que el metodo public int ExisteCliente(String CodigoCliente) no deberia estar en la clase Cliente?

    #7706

    sodrix
    Member

    Hola
    soy novato y tengo un par de dudas que no entiendo de tu código.
    primero lo de “public int ExisteCliente(String CodigoCliente)”
    porqué se supone que le pones int en el método?
    y segunda duda, porqué no pasas CodigoCliente a numeros?
    creo que si lo recibes como String deberias ponerle algo asi antes de comparar.
    int codigo = Integer.parseInt(CodigoCliente);

    puede que me equivoque pero creo que el fallo está ahi porque un cero no es igual en un “String” que en un “int”.
    Tambien se me olvidaba decirte que si te interesan sólo dos opciones puedes usar boolean para darle valor “true” o “false” que para el caso te puede ser más claro si el programa maneja numeros de clientes, provedor, etc te liarías mucho.
    Bueno espero que hagas pruebas y nos cuentes

    #7707

    al2001
    Member

    Porque el metodo retorna un entero tiene como parametro tambien un codigo en este caso String, que se extrae de el archivo Huesped.txt previamente creado que los codigos estan en enteros; aunque lo trabajes como un String. Y si te fijas bien estamos comparando dos String “String CodigoCliente” y “String Cod = Linea.substring(0,pos)” aunque uno lo vea como enteros.
    Lo que pasa es que el CodigoCliente es mejor manejarlos como String, claro que la maquina lo detecta como letras etc, pero uno lo interpreta como numeros.

    #7708

    sodrix
    Member

    sobra un paréntesis aqui?

    while ((Linea = br.readLine()) != null) {

    deberia ser?

    while (Linea = br.readline()&& Linea != null) {
        //..
    }

    lo del && lo pongo porque es un AND y si quieres un OR creo que se usa ||
    soy novato asique no me tengas en cuenta si me equivoco :)

    #7709

    al2001
    Member

    No eso solo sirve para leer una linea de texto en un .txt hasta que la linea sea diferente de null

    #7710

    al2001
    Member

    Recuerda esa linea de codigo si quieres aprender a leer en fichero planos claro en java bueno en los demas no cambia mucho

    #7711

    garusis
    Member

    Creo que no debe ir en la clase cliente ya que verificar la existencia de un cliente es algo concerniente a la clase que contiene a dichos clientes y no a un cliente como tal… pongamos un ejemplo en la vida real:

    un consultorio tiene a varios pacientes esperando ser llamados… cuando un paciente sale del consultorio, se llama al siguiente en la lista, asi que alguien del consultorio hace un llamado a esa persona… pero jamas le dara la lista a un paciente y le dira que se busque en ella (que es lo que estas haciendo en este caso)… en este caso, la lista es el fichero de texto y el cliente es el paciente… el cliente, solo debe tener los metodos suficientes para saber que el es igual o diferente a otra personar (implementar el metodo “equals” es lo unico que deberias tener en la clase Cliente) y el metodo existeCliente deberia estar en una clase que contenga a todos tus clientes… son topicos basicos de Programacion Orientada a Objetos y buenas practicas que puede hacer mas sencilla la comprensión de un problema…

Viewing 9 posts - 1 through 9 (of 9 total)

Debes iniciar sesión para responder a este tema.