Foro de elhacker.net

Programación => Java => Mensaje iniciado por: leogtz en 3 Marzo 2010, 02:39 am



Título: Duda, código sencillo.
Publicado por: leogtz en 3 Marzo 2010, 02:39 am
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
  1. no los elimina a todos. Mi código es el siguiente:
  2. import java.util.*;
  3. public class *****
  4. {
  5. public static void main(String[] args)
  6. {
  7. ArrayList<Integer> valores = new ArrayList<Integer>();
  8. int valor, limite = 20;
  9. for(int i = 0; i < limite; i++)
  10. {
  11. valor = (int)(Math.random() * 100);
  12. valores.add(valor);
  13. }
  14. System.out.println("Deteccion de multiplos de 5 y 2");
  15. for(int i = 0; i < valores.size(); i++)
  16. {
  17. if(valores.get(i) % 5 == 0)
  18. {
  19. System.out.println(valores.get(i) + " <--- 5");
  20. }
  21. else if(valores.get(i) % 2 == 0)
  22. {
  23. System.out.println(valores.get(i) + " <--- 2 ");
  24. } else {
  25. System.out.println(valores.get(i));
  26. }
  27. }
  28. // Eliminacion:
  29. for(int i = 0; i < valores.size(); i++)
  30. {
  31. if(valores.get(i) % 5 == 0)
  32. {
  33. valores.remove(i);
  34. limite--;
  35. } else if(valores.get(i) % 2 == 0)
  36. {
  37. valores.remove(i);
  38. limite--;
  39. }
  40. }
  41.                        // Verificar
  42. System.out.println("Deteccion de multiplos de 5 y 2");
  43. for(int i = 0; i < valores.size(); i++)
  44. {
  45. if(valores.get(i) % 5 == 0)
  46. {
  47. System.out.println(valores.get(i) + " <--- 5");
  48. }
  49. else if(valores.get(i) % 2 == 0)
  50. {
  51. System.out.println(valores.get(i) + " <--- 2");
  52. } else {
  53. System.out.println(valores.get(i));
  54. }
  55. }
  56.  
  57. }
  58. }

Y esta es la salida:

Código:
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


Título: Re: Duda, código sencillo.
Publicado por: AlbertoBSD en 3 Marzo 2010, 02:46 am
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





Título: Re: Duda, código sencillo.
Publicado por: leogtz 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.


Título: Re: Duda, código sencillo.
Publicado por: Leyer en 3 Marzo 2010, 04:25 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,


Título: Re: Duda, código sencillo.
Publicado por: AlbertoBSD en 3 Marzo 2010, 05:39 am
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













Título: Re: Duda, código sencillo.
Publicado por: sapito169 en 3 Marzo 2010, 22:45 pm
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);




Título: Re: Duda, código sencillo.
Publicado por: leogtz en 6 Marzo 2010, 02:01 am
Agradezco la sugerencia, desconozco Java, es por eso que usé el ArrayList.

Saludos.