Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Toryas en 26 Octubre 2007, 04:51 am



Título: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 26 Octubre 2007, 04:51 am
hola nuevamente yo pregutnando cosas XD

bueno miren estoy recorriendo un array en busca de un dato de un objeto dentro de el que contenca cierto dato quiero que me retorne el objeto de la clase silo encuentra pero si no lo llegace a encontrar   me tire un mensage de error o algo asi pero miren tengo esto

Código
  1. public Cliente buasca(String vrut){
  2. for(int i = 0; i < clientes.size(); i++){
  3.     if(clientes.get( i ) == vrut){
  4.                 return clientes.get(i);
  5. }
  6. else{
  7. System.out.println("no encontrado");
  8. }
  9.  

pero me tira un error al compilar que es este :
incompatible types

que esta mal aka?


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 26 Octubre 2007, 06:19 am
modifique el codigo poruqe lo teni amalito miren asi kedo pero me tira = un eeror pongo toda la clase

Código
  1. import java.io.*;
  2. import java.util.*;
  3. public class Listas{
  4. public Cliente algo;
  5. public static Escritura clientx = new Escritura();
  6. private ArrayList clientes = new ArrayList();
  7.  
  8. public void addCliente(Cliente cliente)throws IOException{
  9. clientes.add(cliente);
  10. clientx.abrir();
  11. clientx.escribir(cliente);
  12. clientx.cerrar();
  13. }
  14. public Cliente buasca(String vrut){
  15. for(int i = 0; i < clientes.size(); i++){
  16.     algo = clientes.get(i);
  17.     if(algo.getRut() == vrut){
  18.           return algo;
  19. }
  20. else{
  21. System.out.println("no encontrado");
  22. }
  23. }
  24. }
  25. }

y el errro keme tira es en la linea

Código
  1. algo = clientes.get(i);

me dice :incompatible types


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Azulf en 26 Octubre 2007, 07:44 am
Haber haber, recien estoy viendo la clase ArrayList, y al parecer es mejor que la clase Vector,en fin, ese metodo get(int i); te devuelve un objeto del tipo Object, lo que deberias hacer es truncarlo o sea asi:

Código
  1. algo = (Cliente)clientes.get(i);
  2.  

Saludos


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: darkraider en 26 Octubre 2007, 09:37 am
Hola buenas, si usas la version nueva del SDK podes declarar los List y sus implementaciones (o sea los ArrayList tambien) especificando el tipo de datos que van a querer (programacione genérica o algo asin). Entonces podes cambiar
Código:
private ArrayList clientes = new ArrayList();
por lo siguiente:
Código:
private ArrayList clientes;
public NombreDeLaClase(...)
{
  clientes = new ArrayList<cliente>();
}
Nota: te inicialicé la variable clientes en al constructora porque se considera una "buena práctica".
 A partir de esto, no hace falta haceer el casting de Clinetes. Salu2


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 26 Octubre 2007, 16:22 pm
jo bueno gracias a Azulf parac eque se arreglo el problema pero me tira otro error ahora XD:

Código
  1. import java.io.*;
  2. import java.util.*;
  3. public class Listas{
  4. public Cliente algo;
  5. public static Escritura clientx = new Escritura();
  6. private ArrayList clientes = new ArrayList();
  7.  
  8. public void addCliente(Cliente cliente)throws IOException{
  9. clientes.add(cliente);
  10. clientx.abrir();
  11. clientx.escribir(cliente);
  12. clientx.cerrar();
  13. }
  14. public Cliente buasca(String vrut){
  15. for(int i = 0; i < clientes.size(); i++){
  16.     algo = (Cliente)clientes.get(i);
  17.     if(algo.getRut() == vrut){
  18.           return algo;
  19. }
  20. }
  21. System.out.println("no encontrado");
  22. }
  23.  
  24. }

missing return statement señalando el } que esta abajo del System.otut.println(..


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Casidiablo en 26 Octubre 2007, 16:47 pm
Lo que pasa es que tienes que intentar retornar algo, aparte de lo que tienes en el if.


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Casidiablo en 26 Octubre 2007, 16:52 pm
Te explico un poco mejor... cuando abres un método que retorne un valor tienes que especificar un return:

Código
  1. public TipoRetorno metodo()
  2. {
  3.    .......
  4.    return objetoTipoRetorno;
  5. }

Hasta hay creo que lo tienes claro. Ahora, cuando necesitas evaluar alguna condición, y luego de ello retornar o no un valor NO debes hacer algo como esto:

Código
  1. public TipoRetorno metodo()
  2. {
  3.    if(condicion)
  4.    {
  5.            .......
  6.            return unObjetoTipoRetorno;
  7.    }
  8. }

Sino así:

Código
  1. public TipoRetorno metodo()
  2. {
  3.    if(condicion)
  4.    {
  5.            .......
  6.            return unObjetoTipoRetorno;
  7.    }
  8.    return objetoTipoRetorno;
  9. }

¿Lo pillas?


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 26 Octubre 2007, 17:57 pm
los siento pero nolo pillo

me merie con eso de

"unObjetoTipoRetorno" y "objetoTipoRetorno"

mira ahora cambie el metodo pa hacer que me retorne un int no mas ai el codigo:

Código
  1. public int buasca(String vrut){
  2. int i;
  3. for(i=0;i<clientes.size();i++){
  4. algo =(Cliente)clientes.get(i);
  5.   if(algo.getRut()==vrut){
  6.   return i;
  7.   }
  8.   return -1;
  9.  
  10. }
  11. }

me tir ale mismo error  y no entiendo lo que me dices


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 26 Octubre 2007, 18:06 pm
m.. mira aver si esto esta mejor porlo menos me compila pero crea que hay algo de mas

deje asila cosa:

Código
  1. public int busca(String vrut){
  2. int i;
  3. for(i=0;i<clientes.size();i++){
  4. algo =(Cliente)clientes.get(i);
  5.   if(algo.getRut()==vrut)return i;
  6.   return i;
  7.   }
  8.   return -1;
  9.  
  10. }

me compila pero creo que hay algo que esta sobrando


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Azulf en 26 Octubre 2007, 19:29 pm
Haber, creo que lo que escribió Cristian esta más claro que el agua.
Tu ultimo codigo, si hay algo que sobra, es un  [return i]

Código
  1. public int busca(String vrut){
  2. int i;
  3. for(i=0;i<clientes.size();i++){
  4. algo =(Cliente)clientes.get(i);
  5.   if(algo.getRut()==vrut)return i;
  6.   return i;
  7.   }
  8.   return -1;
  9.  
  10. }
  11.  

Solo sigue el flujo
1.-Entra al método con un parámetro String
2.-Entra al ciclo buscando el si el nombre ia se encuentra en el Array
3.-Si la condición se cumple, entonces retorna la posición en la que se encuentra, se ejecuta el primer (return i) y sale del método, entonces ese segundo return i no tiene sentido
4.-En caso termine el ciclo y nunca se encontró la palabra, indicara que el parametro String no existe y retorna -1

Espero hayas entendido

Saludos


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Casidiablo en 26 Octubre 2007, 19:48 pm
Haber, creo que lo que escribió Cristian esta más claro que el agua.

Ummm, recuerdo cuando aún vivía en el anonimato... ahora soy más público que una P&%$.

Toryas: Vamos, que si se puede!!!



Un saludo!


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Azulf en 26 Octubre 2007, 22:04 pm
u.u, oie te molesta que me refiera a ti por tu nombre, o prefieres Casidiablo?, sabes leo tu blog, y creo que te debo una , me sacaste de un apuro cuando tome prestado uno de tus codigos y lo mejoré u.u.

Saludos


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Casidiablo en 27 Octubre 2007, 00:23 am
Jaja, no es problema... solo decía.

Un saludo!


Título: Re: denuevo yo con mis problemas en java(recorrer el arraylist)
Publicado por: Toryas en 27 Octubre 2007, 00:48 am
bueno muchas gracias

a todos por su ayuda