Tengo un problema con la instanciación de un objeto, explico brevemente y pongo en situación: estoy creando un método que incluye en una lista de la compra un objeto aleatorio de un inventario en un archivo de txt. La idea es capturar en una ArrayList todos los elementos del inventario, crear un número aleatorio en el rango de elementos que quedan y añadir ese elemento. El inventario administra un elemento por linea y sus atributos están separados por "--" de la forma: Nombre1--atributo1--atributo2--atributo3 etc. Con esos elementos creo el elemetno a añadir con su correspondiente constructor con parámetros. Por las pruebas que he hecho, recupero correctamente el elemento, separo en un array sus partes mediante un split() correctamente, pero al crear el nuevo elemento, me da un error de puntero nulo, o sea que no existe ese elemento en memoria al añadirlo al pedido. ¿Por qué la última línea de código me da un elemento nulo? ¿Dónde está el error? No acbo de dar con ello y no entiendo el por qué.
Aquí el código que he implementado
try {
//Opening the file and creating BufferedReader
file = new File ("files\\inventory.txt");
fReader = new FileReader (file);
bfReader = new BufferedReader(fReader);
// Reading the file
String item = null;
ArrayList<String> itemToAddList = new ArrayList<String>();
Item itemAdded = null;
while((item=bfReader.readLine())!=null) {
if(item != null)
itemToAddList.add(item); //We add the inventory items to the list
}
//We crate the random item with the limits 0 and the size of inventory
int randomItem = (int)(Math.random()* itemToAddList.size()+1)+0;
//We separate the components of the constructor in parts to create the desired item
String addString = itemToAddList.get(randomItem);
String[] partsConstructor = addString.split("--");
//We create a new item of the type specified in the first item field in the inventory
if(partsConstructor[0] =="Burger") {
itemAdded = new Burger(partsConstructor[1], Boolean.parseBoolean(partsConstructor[2]), partsConstructor[3], Double.parseDouble(partsConstructor[4]),
Double.parseDouble(partsConstructor[5]),Double.parseDouble(partsConstructor[6]), Integer.parseInt(partsConstructor[7]) );
}else if(partsConstructor[0] == "Salad") {
itemAdded = new Salad(partsConstructor[1], Boolean.parseBoolean(partsConstructor[2]), partsConstructor[3], Double.parseDouble(partsConstructor[4]),
Double.parseDouble(partsConstructor[5]),Double.parseDouble(partsConstructor[6]), Integer.parseInt(partsConstructor[7]));
}else if(partsConstructor[0] =="Beverage") {
itemAdded = new Beverage(partsConstructor[1],Integer.parseInt(partsConstructor[2]),Double.parseDouble(partsConstructor[3]),
Boolean.parseBoolean(partsConstructor[4]),partsConstructor[5],Double.parseDouble(partsConstructor[6]),Double.parseDouble(partsConstructor[7]),
Double.parseDouble(partsConstructor[8]),Integer.parseInt(partsConstructor[9]));
}else if(partsConstructor[0] =="Dessert") {
itemAdded = new Dessert(partsConstructor[1],Boolean.parseBoolean(partsConstructor[2]),partsConstructor[3],
Double.parseDouble(partsConstructor[4]),Double.parseDouble(partsConstructor[5]),Double.parseDouble(partsConstructor[6]),Integer.parseInt(partsConstructor[7]));
}else if(partsConstructor[0] =="Side") {
itemAdded = new Side(partsConstructor[1],Integer.parseInt(partsConstructor[2]),partsConstructor[3],Double.parseDouble(partsConstructor[4]),
Double.parseDouble(partsConstructor[5]),Double.parseDouble(partsConstructor[6]),Integer.parseInt(partsConstructor[7]));
}
//We add the random item to the order
guiApp.getKiosk().addItem2Order(itemAdded);
......//catch & exceptions
Gracias anticipadas