Duda, código sencillo.

Iniciado por leogtz, 3 Marzo 2010, 02:39 AM

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

leogtz

Hola, estoy iniciandome en Java, y tengo un ejercicio de eliminar los múltiplos de 5 y de 2 en un ArrayList, creo que mi algoritmo está bien, pero no encuentro porque no me elimina todo.

Se supone que es una lista, y voy eliminando la posición "i" en caso de que sea multiplo de 5 o 2.
Código (java) [Seleccionar]
no los elimina a todos. Mi código es el siguiente:
import java.util.*;
public class *****
{
public static void main(String[] args)
{
ArrayList<Integer> valores = new ArrayList<Integer>();
int valor, limite = 20;
for(int i = 0; i < limite; i++)
{
valor = (int)(Math.random() * 100);
valores.add(valor);
}
System.out.println("Deteccion de multiplos de 5 y 2");
for(int i = 0; i < valores.size(); i++)
{
if(valores.get(i) % 5 == 0)
{
System.out.println(valores.get(i) + " <--- 5");
}
else if(valores.get(i) % 2 == 0)
{
System.out.println(valores.get(i) + " <--- 2 ");
} else {
System.out.println(valores.get(i));
}
}
// Eliminacion:
for(int i = 0; i < valores.size(); i++)
{
if(valores.get(i) % 5 == 0)
{
valores.remove(i);
limite--;
} else if(valores.get(i) % 2 == 0)
{
valores.remove(i);
limite--;
}
}
                       // Verificar
System.out.println("Deteccion de multiplos de 5 y 2");
for(int i = 0; i < valores.size(); i++)
{
if(valores.get(i) % 5 == 0)
{
System.out.println(valores.get(i) + " <--- 5");
}
else if(valores.get(i) % 2 == 0)
{
System.out.println(valores.get(i) + " <--- 2");
} else {
System.out.println(valores.get(i));
}
}

}
}


Y esta es la salida:

Deteccion de multiplos de 5 y 2
59
39
94 <--- 2
9
51
48 <--- 2
92 <--- 2
62 <--- 2
46 <--- 2
94 <--- 2
88 <--- 2
4 <--- 2
25 <--- 5
22 <--- 2
66 <--- 2
63
36 <--- 2
50 <--- 5
71
3
Deteccion de multiplos de 5 y 2
59
39
9
51
92 <--- 2
46 <--- 2
88 <--- 2
25 <--- 5
66 <--- 2
63
50 <--- 5
71
3
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

AlbertoBSD

Cuando elimines un elemento en la siguiente iteración no tienes que incrementar, para solucionarlo con el for que tienes ahi, cada que elimines decrementa i.Eso de momento fue lo que vi.
Saludos



Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

leogtz

#2
Era eso, gracias.

Otra duda, ¿como puedo obtener la longitud de una matriz bidimensional con ArrayList?

O sea, sacar filas y columnas.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Leyer

Cita de: Leo Gutiérrez. en  3 Marzo 2010, 02:49 AM
Era eso, gracias.

Otra duda, ¿como puedo obtener la longitud de una matriz bidimensional con ArrayList?

O sea, sacar filas y columnas.

Eso no lo entendi :xD

Un Saludo,

AlbertoBSD

No entendí muy bien, la pregunta que digamos, pero si vas a trabajar con una matriz bidimiencional, de manera lineal, siempre tienes que tener en mente la longitud de cada fila (numero de columnas en una fila :P), asi para obtener el elemento (x,y) de la matriz solo pides get(len_fila*y+x);
Saludos











Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

sapito169

el arraylist no es la mejor opcion para trabajar con tablas la mejor opcion es defaultablemodel otra opcion mucho mas sencilla es un arreglo bidimensional
se puede lograr trabajar contablas en el array list pero no tendriam muy poco sentido
seria que cada propiedad de un objeto sea como una columna
es decir para llenar una tabla de Personas con las columas edad nombre y sexo
asi

edad |nombre | sexo
13    | luchito  | h
14    |maria    | m
15    | alberto | h

serai asiendo esto

ArrayList list <Personas>=new ArrayList<Personas>();
Persona lucho =new Persona(13, luchito,h);
list.AddElement(lucho);
Persona maria =new Persona(14, maria,m);
list.AddElement(maria);
Persona alberto =new Persona(15, alberto,h);
list.AddElement(alberto);



leogtz

Agradezco la sugerencia, desconozco Java, es por eso que usé el ArrayList.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com