Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Ayudemen por favor

Buenas tardes:

En este programa debo leer un archivo de texto y luego cada vez que en cuentre la palabra C eb el archivo cree una istancia de canica la cual el constructor de canica tiene una ArrayList y debe almacenarcen todas las canicas q sea creadas , el problema q tengo es q Al hacer esto solo me almacena a la lista la ultima canica y necesito almacenarlas todas aca va el codigo por favor alguien me puede ayudar ?


package Canicas;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;



public class Principal {
private static ArrayList <Integer> miLista = new ArrayList<Integer>();
private static ArrayList <Integer> miLista2 = new ArrayList<Integer>();

public void leerArchivo(String nombreArchivo) {
BufferedReader br = null;

try {

String linea;

br = new BufferedReader(new FileReader(nombreArchivo));

while ((linea = br.readLine()) != null) {
String[] elementos = linea.split(",");

for (int i = 0; i < elementos.length; i++) {
if(elementos[i].equals("T")){
int x=Integer.parseInt(elementos[i+1]);
int y=Integer.parseInt(elementos[i+2]);
miLista.add(x);
miLista.add(y);

}

if(elementos[i].equals("C")){
int x,y,d,p;
x=Integer.parseInt(elementos[i+1]);
y=Integer.parseInt(elementos[i+2]);
d=Integer.parseInt(elementos[i+3]);
p=Integer.parseInt(elementos[i+4]);
miLista2.add(x);
miLista2.add(y);
miLista2.add(d);
miLista2.add(p);


}






}
}

} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

public static void main(String[] args) {
Scanner lector= new Scanner(System.in);
String Iniciar,Juego;
Tablero t = null;
Canicas c = null;
System.out.println("BIENVENIDO AL JUEGO DE CANICAS");
do{
System.out.println("PRESIONE LA TECLA 'I' Y A CONTINUACION ENTER PARA EMPEZAR");
Iniciar = lector.nextLine();
}while(!Iniciar.equals("I"));
Principal p = new Principal();
p.leerArchivo("d:\\config.txt");
System.out.println("ESTADO DEL JUEGO : ");

// recorre la lista de el tablero
for (int i = 0; i <miLista.size(); i++) {
if(i==0){
int x = miLista.get(i);
int y = miLista.get(i+1);
t = new Tablero(x,y);
}
}

// recorre la lista de las canicas y crea la instancia canica
for (int i = 0; i <miLista2.size(); i++) {
if(((i+1)%4)==0){
int x = miLista2.get(i-3);
int y =miLista2.get(i-2);
int d = miLista2.get(i-1);
int r = miLista2.get(i);
c = new Canicas(x,y,d,r);
t.agregarCanica(c);

}

//aca va la clase canica


package Canicas;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Canicas extends Direction implements Moveable {
private int x,y;
private Direction dir;
private Position pos;
private ArrayList <Canicas> miLista = new ArrayList<Canicas>();



public Canicas(int x,int y , int d,int p){
super(d,p);
miLista.add(this);
this.x=x;
this.y=y;


}


puse un pedazo de codigo por favor ayudemen no he podido hacerlo .

marzo 24, 2014 | Registered Commenterbachnonymus

Cada vez que haces un new de Canicas creas una lista vacia.

No tiene sentido que la clase Canica contenga una lista de Canicas. Tienes que declarar esa lista fuera. La clase Principal seria un buen lugar, por ejemplo.

Un saludo

marzo 25, 2014 | Unregistered CommenterUnoPorAhi

Guenas.

Una forma de hacer esto sin cambiar demasiado el código es que la lista que contine la clase Canicas sea static e inicializarla en la declaracion. Como dice UoPorAhi no parece aun así que tenga demasiado sentido. Es cierto que muchos ejemplos que se ven en internet utilizan este sistema, pero a la larga veras que el control de las Canicas es mejor tenerlo fuera. Si es solo un ejercicio te valdrá lo que digo. Si es un tema profesional no lo hagas

Un saludo

marzo 26, 2014 | Unregistered CommenterPaposo