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
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?
modifique el codigo poruqe lo teni amalito miren asi kedo pero me tira = un eeror pongo toda la clase
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
algo = clientes.get(i);
me dice :incompatible types
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:
algo = (Cliente)clientes.get(i);
Saludos
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
jo bueno gracias a Azulf parac eque se arreglo el problema pero me tira otro error ahora XD:
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(..
Lo que pasa es que tienes que intentar retornar algo, aparte de lo que tienes en el if.
Te explico un poco mejor... cuando abres un método que retorne un valor tienes que especificar un return:
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:
public TipoRetorno metodo()
{
if(condicion)
{
.......
return unObjetoTipoRetorno;
}
}
Sino así:
public TipoRetorno metodo()
{
if(condicion)
{
.......
return unObjetoTipoRetorno;
}
return objetoTipoRetorno;
}
¿Lo pillas?
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:
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
m.. mira aver si esto esta mejor porlo menos me compila pero crea que hay algo de mas
deje asila cosa:
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
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]
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
Cita de: Azulf en 26 Octubre 2007, 19:29 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!
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
Jaja, no es problema... solo decía.
Un saludo!
bueno muchas gracias
a todos por su ayuda