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.
-
AutorMensajes
-
March 10, 2012 at 10:46 pm #6513
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; }
March 10, 2012 at 11:30 pm #7704Para 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…
March 12, 2012 at 5:14 pm #7705Gracias 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?
March 13, 2012 at 1:18 am #7706Hola
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 cuentesMarch 13, 2012 at 3:49 am #7707Porque 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.March 13, 2012 at 6:02 pm #7708sobra 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
March 15, 2012 at 3:32 am #7709No eso solo sirve para leer una linea de texto en un .txt hasta que la linea sea diferente de null
March 15, 2012 at 3:33 am #7710Recuerda esa linea de codigo si quieres aprender a leer en fichero planos claro en java bueno en los demas no cambia mucho
March 17, 2012 at 11:45 am #7711Creo 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…
-
AutorMensajes
Debes iniciar sesión para responder a este tema.