denuevo yo con mis problemas en java(recorrer el arraylist)

Iniciado por Toryas, 26 Octubre 2007, 04:51 AM

0 Miembros y 1 Visitante están viendo este tema.

Toryas

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 (java) [Seleccionar]
public Cliente buasca(String vrut){
for(int i = 0; i < clientes.size(); i++){
    if(clientes.get( i ) == vrut){
                 return clientes.get(i);
}
else{
System.out.println("no encontrado");
}


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

que esta mal aka?

Toryas

modifique el codigo poruqe lo teni amalito miren asi kedo pero me tira = un eeror pongo toda la clase

Código (java) [Seleccionar]
import java.io.*;
import java.util.*;
public class Listas{
public Cliente algo;
public static Escritura clientx = new Escritura();
private ArrayList clientes = new ArrayList();

public void addCliente(Cliente cliente)throws IOException{
clientes.add(cliente);
clientx.abrir();
clientx.escribir(cliente);
clientx.cerrar();
}
public Cliente buasca(String vrut){
for(int i = 0; i < clientes.size(); i++){
    algo = clientes.get(i);
    if(algo.getRut() == vrut){
            return algo;
}
else{
System.out.println("no encontrado");
}
}
}
}


y el errro keme tira es en la linea

Código (java) [Seleccionar]
algo = clientes.get(i);

me dice :incompatible types

Azulf

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 (java) [Seleccionar]

algo = (Cliente)clientes.get(i);


Saludos

darkraider

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
private ArrayList clientes = new ArrayList();
por lo siguiente:
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
Curioso de mi...

Toryas

jo bueno gracias a Azulf parac eque se arreglo el problema pero me tira otro error ahora XD:

Código (java) [Seleccionar]
import java.io.*;
import java.util.*;
public class Listas{
public Cliente algo;
public static Escritura clientx = new Escritura();
private ArrayList clientes = new ArrayList();

public void addCliente(Cliente cliente)throws IOException{
clientes.add(cliente);
clientx.abrir();
clientx.escribir(cliente);
clientx.cerrar();
}
public Cliente buasca(String vrut){
for(int i = 0; i < clientes.size(); i++){
    algo = (Cliente)clientes.get(i);
    if(algo.getRut() == vrut){
            return algo;
}
}
System.out.println("no encontrado");
}

}


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

Casidiablo

Lo que pasa es que tienes que intentar retornar algo, aparte de lo que tienes en el if.

Casidiablo

Te explico un poco mejor... cuando abres un método que retorne un valor tienes que especificar un return:

Código (java) [Seleccionar]
public TipoRetorno metodo()
{
    .......
    return objetoTipoRetorno;
}


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 (java) [Seleccionar]
public TipoRetorno metodo()
{
    if(condicion)
    {
            .......
            return unObjetoTipoRetorno;
    }
}


Sino así:

Código (java) [Seleccionar]
public TipoRetorno metodo()
{
    if(condicion)
    {
            .......
            return unObjetoTipoRetorno;
    }
    return objetoTipoRetorno;
}


¿Lo pillas?

Toryas

#7
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 (java) [Seleccionar]
public int buasca(String vrut){
int i;
for(i=0;i<clientes.size();i++){
algo =(Cliente)clientes.get(i);
    if(algo.getRut()==vrut){
    return i;
    }
    return -1;
   
}
}


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

Toryas

m.. mira aver si esto esta mejor porlo menos me compila pero crea que hay algo de mas

deje asila cosa:

Código (java) [Seleccionar]
public int busca(String vrut){
int i;
for(i=0;i<clientes.size();i++){
algo =(Cliente)clientes.get(i);
    if(algo.getRut()==vrut)return i;
    return i;
    }
    return -1;
   
}


me compila pero creo que hay algo que esta sobrando

Azulf

#9
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 (java) [Seleccionar]

public int busca(String vrut){
int i;
for(i=0;i<clientes.size();i++){
algo =(Cliente)clientes.get(i);
    if(algo.getRut()==vrut)return i;
    return i;
    }
    return -1;

}


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