0 votos
por (320 puntos) en Java
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:

<pre lang='java'>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;
    }

8 Respuestas

0 votos
por (240 puntos)
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...


0 votos
por (320 puntos)
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?


0 votos
por (420 puntos)
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


0 votos
por (320 puntos)
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.


0 votos
por (420 puntos)
sobra un paréntesis aqui?

while ((Linea = br.readLine()) != null) {
deberia ser?

while (Linea = br.readline()&amp;&amp; Linea != null) {
    //..
}
lo del &amp;&amp; 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 :)


0 votos
por (320 puntos)
No eso solo sirve para leer una linea de texto en un .txt hasta que la linea sea diferente de null


0 votos
por (320 puntos)
Recuerda esa linea de codigo si quieres aprender a leer en fichero planos claro en java bueno en los demas no cambia mucho


0 votos
por (240 puntos)
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...


Preguntas relacionadas

0 votos
0 respuestas
0 votos
2 respuestas
0 votos
1 respuesta
preguntado por kenny powers (60 puntos) Mar 21, 2020 en Java
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...