Java - Consulta ArrayList

 
Vista:

Consulta ArrayList

Publicado por Sergio (5 intervenciones) el 19/06/2013 17:06:15
Hola gente soy un novato con Java recurro a ustedes no se como seguir... les comento debo hacer un programa que guarde dentro de un arrayList lo que lee de un archivo hasta ahí estoy bien. Sucede que me piden que esos datos que guardo en el arraylist deben tener el formato definido en la clase Cromosoma, al hacer este cambio e imprimir me trae basura :/
Les dejo el codigo, desde ya muy agradecido por su tiempo, cualquier sugerencia sera bienvenida! Saludos!
***************************CLASS MAIN*****************************
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;


public class Main {

public static void main(String[] args) throws IOException {
BufferedReader input = null;
ArrayList<Cromosoma> name = new ArrayList<Cromosoma>();

try{
input = new BufferedReader(new FileReader("c:\\archivo.txt"));
String nm;
while ((nm=input.readLine())!=null)
{
name.add(new Cromosoma(nm));

}
}finally{
if(input!=null) input.close();
}
display(name);

System.out.println();
display(name);
}


public static void display(ArrayList<Cromosoma> name) //imprimo el arrayList
{
for(Cromosoma x:name)
System.out.println(x);
}

}


***************************CLASS CROMOSOMA*****************************

import java.util.ArrayList;


public class Cromosoma {

private char genes[];

public Cromosoma(String genes)
{
this.setGenes(genes.toCharArray());
}


public static void ImprimeArrayList (ArrayList<Cromosoma> imprimir)
{

for (int i=0;i<imprimir.size();i++)
{
System.out.println(imprimir.get(i));

}

}


public char[] getGenes() {
return genes;
}



public void setGenes(char genes[]) {
this.genes = genes;
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

tu archivo

Publicado por Renzo (232 intervenciones) el 19/06/2013 19:21:20
Hola,
envía el contenido del archivo que estas leyendo con tu aplicación.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

tu archivo

Publicado por Sergio (5 intervenciones) el 19/06/2013 19:29:20
Renzo gracias por tu respuesta no sume el contenido del archivo ya que es indiferente pero podrían ser distintos string separados por diferentes lineas dentro del archivo.
A modo de ejemplo el archivo.txt podría contener:

gen1
gen2
gen3
gen4

Saludos y gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

tu archivo

Publicado por Renzo (232 intervenciones) el 19/06/2013 19:35:42
Sergio,
no es basura lo que imprimes. Es solo la representación del objeto en memoria.
Para que imprimas bien debes hacerlo asi:


for (Cromosoma x : name)
System.out.println(x.getGenes());


Espero haberte ayudado. Si fue así, apoyame con un like a mi web:

https://www.facebook.com/pages/imagineanddocom/101250883361427?fref=ts

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

tu archivo

Publicado por Sergio (5 intervenciones) el 19/06/2013 19:44:35
Sos un grande!!! gracias por la ayuda ! ya fue mi me gusta en tu espacio de facebook.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

tu archivo

Publicado por Renzo (232 intervenciones) el 19/06/2013 21:19:12
No fue nada.
Si tienes otras dudas las compartes acá o al mail
Saludos y gracias por el like.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otra duda..

Publicado por Sergio (5 intervenciones) el 21/06/2013 19:34:05
Gente ! Renzo ? recurro a ustedes una ves mas segui con el programa y nuevamente me quede : / Probablemente tengo un concepto que no lo estoy interpretando.
Selecciono por random la posicion del arraylist que debe ser modificada.
Al mostrar el elemento elegido me trae la la representación del objeto en memoria o basura no se bien.
El Metodo en cuestión es el random.

Gracias por sus sugerencias !!
Saludos!


-------------------------------------------------clase Main------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream.GetField;
import java.util.ArrayList;
import java.util.Random;
 
public class Main {
 
	private static int aux;
 
 
	public static void main(String[] args) throws IOException {
		BufferedReader input = null;
		ArrayList<Cromosoma> name = new ArrayList<Cromosoma>();
	    try{
			input = new BufferedReader(new FileReader("c:\\archivo.txt"));
			String nm;
 
			while ((nm=input.readLine())!=null)
			{
				int convertir = binToDec(nm);
				name.add(new Cromosoma(nm, convertir));
 
 
			}
 
 
		}finally{
		if(input!=null) input.close();
		}
		System.out.println("Muestro los genes cargados en el archivo ");
		display(name);
	 	random(name);
 
 
	//	sortName(name);
 
 
		System.out.println("\nModificar una  posicion modificar su adaptabilidad, luego imprimir solo el mayor ");
	}
 
 
	public static void display(ArrayList<Cromosoma> name) //imprimo el arrayList
	{
 
		for(Cromosoma x:name)
		{
 
			System.out.println(x.getGenes());   //habia usado System.out.println(x) imprimia basura; 
			System.out.println("Adaptabilidad: " +x.getAdapt());
 
			System.out.println("");
 
 
	     }
	}
 
	private static void random(ArrayList<Cromosoma> name) //imprimo el arrayList
	{
		Random rand = new Random();
 
		int TAM_ARRAY=name.size(); // obtenego cuantas posiciones tiene el arraylist		
		int  n = rand.nextInt(TAM_ARRAY-1) + 1; // de las posiciones del array eligo una
 
		System.out.println("random "+n);
 
		System.out.print(name.get(n));  //  --> ACA TENGO EL PROBLEMA
 
	}
 
 
private static int binToDec(String pNumBin) {
 
        int resultado = 0 ;
 
        for( int i = 0; i < pNumBin.length() ; i++ ) {
 
            char digito = pNumBin.charAt( i );
 
            /* en general, resultado = resultado * base + digito */
 
            try {
 
                int valDigito = Integer.parseInt( Character.toString(digito) ) ;
 
                resultado = resultado * 2 + valDigito ;
 
            } catch (Exception e) {
                // TODO: Add catch code
 
            }
 
        }
 
        return resultado ;
 
    }
 
 
public static int getAux() {
	return aux;
}
 
 
public static void setAux(int aux) {
	Main.aux = aux;
}
 
 
 
}


-------------------------------------------------clase cromosoma------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import java.util.ArrayList;
 
 
public class Cromosoma {
 
private static char genes[];
private int adapt;
 
 
public Cromosoma(String genes, int adapt)
{
this.setGenes(genes.toCharArray());
this.setAdapt(adapt);
 
 
}
 
 
public static void ImprimeArrayList (ArrayList<Cromosoma> imprimir)
{
 
for (int i=0;i<imprimir.size();i++)
{
System.out.println(imprimir.get(i));
 
}
 
}
 
 
public static char[] getGenes(int n) {
return genes;
}
 
public char[] getGenes() {
	// TODO Auto-generated method stub
	return genes;
}
 
 
 
public void setGenes(char genes[]) {
this.genes = genes;
}
 
 
public int getAdapt() {
	return adapt;
}
 
 
public void setAdapt(int adapt) {
	this.adapt = adapt;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otra duda..

Publicado por Renzo (232 intervenciones) el 21/06/2013 21:34:29
Hola,
no comprendo bien tu problema. Pero prueba reemplazando esta línea:

----------------------------
System.out.print(name.get(n).getGenes()); // --> ACA TENGO EL PROBLEMA
----------------------------

Saludos

Renzo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otra duda..

Publicado por Sergio (5 intervenciones) el 22/06/2013 05:41:56
Gracias ahora si me trae el resultado correcto una ves mas me salvaste!!

Muestro los genes cargados en el archivo
1110
Adaptabilidad: 14
Posicion dentro del Arraylist: 0

0111
Adaptabilidad: 7
Posicion dentro del Arraylist: 1

1111
Adaptabilidad: 15
Posicion dentro del Arraylist: 2

0001
Adaptabilidad: 1
Posicion dentro del Arraylist: 3

Posicion del arraylist escogida por el random 1
0111



Entiendo la linea que modifiste se lee:
name -> es el arraylist
get(n)-> n posicion seleccionada get(n) posicion dentro del arraylist
getGenes-> objeto de la clase name
System.out.print(name.get(n).getGenes());


Me quedo claro gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otra duda..

Publicado por Renzo (232 intervenciones) el 22/06/2013 06:53:12
Hola
con get(n) obtienes el objeto en la ubicación n dentro del arreglo
y con getGenes se obtiene el atributo Genes del objeto cromosoma. Dicho getgenes como devuelve un arreglo de caracteres se visualiza correctamente en tu consola.

Saludos

Renzo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar