import java.util.ArrayList;
import java.util.Random;
import java.io.*;
class Main{
static ArrayList <Item> lista = new ArrayList<>();
static Random rand = new Random();
static char lNombre = 'A';
public static void main(String[] args){
inicio();
mercado();
informeFinal();
}
static int random(int m, int n){
return m + rand.nextInt(n-m+1);
}
static void inicio(){
int n = random(7, 10);
int i=0;
for(; i<n; i++)
lista.add(new Item(Character.toString(lNombre++), random(1, 10), random(1, 10)));
System.out.println("Lista de Compras Inicial:\nItem\tNombre\tUnidad\tCant.\t PreIni\tCostoIni");
i =1;
float costoIni, sCostoIni = 0;
for(Item it: lista){
costoIni = it.getCostoIni();
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\t %6.2f\n", i++, it.nombre, it.unidad, it.cantidad, it.preIni, costoIni);
sCostoIni += costoIni;
}
System.out.printf("Total:\t\t\t\t\t %6.2f\n", sCostoIni);
}
static void mercado(){
System.out.println("\nCambios en el mercado:");
System.out.println("item " + 2 + ": se eliminó");
Item it = lista.remove(2-1); // remove Item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 2, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 3 + ": se insertó");
it = new Item(Character.toString(lNombre++), random(1, 10), random(1, 10));
lista.add(3-1, it); // inserta item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 3, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 4 + ": se modificó la unidad a Bolsa");
it = lista.get(4-1);
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 4, it.nombre, it.unidad, it.cantidad, it.preIni);
it.unidad = "Bolsa"; // Modifica item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 4, it.nombre, it.unidad, it.cantidad, it.preIni);
for(Item lis: lista) lis.preFin += lis.preIni +random(-2, 2); // cálculo de precios Finales
}
static void informeFinal(){
System.out.println();
System.out.println("Lista de Compras Final:");
System.out.println("Item\tNombre\tUnidad\tCant.\tPreIni\t PreFin\t CIni CFin\t CFin-CIni ");
int i = 1;
float costoIni, sCostoIni = 0, costoFin, sCostoFin = 0, dif, sDif = 0;
for(Item it: lista) {
costoIni = it.getCostoIni();
costoFin = it.getCostoFin();
dif = costoFin - costoIni;
System.out.printf("%2d\t%4s\t%6s\t %2d\t%6.2f\t %6.2f\t %6.2f\t %6.2f\t %6.2f\n",
i++, it.nombre, it.unidad, it.cantidad, it.preIni, it.preFin, costoIni, costoFin, dif);
sCostoIni += costoIni;
sCostoFin += costoFin;
}
System.out.printf("Total:\t\t\t\t\t\t %6.2f\t %6.2f\t %6.2f\n",sCostoIni, sCostoFin, sCostoFin-sCostoIni);
new DB().saveLista(lista);
}
}
class Item{
String nombre;
String unidad;
int cantidad;
float preIni; // precio Inicial
float preFin; // precio Final
Item(String nombre, int cantidad, float preIni){
this.nombre = nombre;
unidad = "Kg.";
this.cantidad = cantidad;
this.preIni = preIni;
}
float getCostoIni(){return cantidad*preIni;}
float getCostoFin(){return cantidad*preFin;}
public String toString(){
return nombre + "\t" + unidad + "\t" + cantidad + "\t" + preFin;
}
}
class DB{
void saveLista(ArrayList<Item> lista){
try (PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("listaIni.txt")))){
for(Item it: lista) out.println(it);
} catch (IOException e){ System.out.println(e);}
}
}
/*
import java.util.ArrayList;
import java.util.Random;
import java.io.*;
class ListaApp1{
static ArrayList <Item> lista = new ArrayList<>();
static Random rand = new Random();
static char lNombre = 'A';
public static void main(String[] args){
inicio();
mercado();
informeFinal();
}
static int random(int m, int n){
return m + rand.nextInt(n-m+1);
}
static void inicio(){
int n = random(7, 10);
int i=0;
for(; i<n; i++)
lista.add(new Item(Character.toString(lNombre++), random(1, 10), random(1, 10)));
System.out.println("Lista de Compras Inicial:\nItem\tNombre\tUnidad\tCant.\t PreIni\tCostoIni");
i =1;
float costoIni, sCostoIni = 0;
for(Item it: lista){
costoIni = it.getCostoIni();
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\t %6.2f\n", i++, it.nombre, it.unidad, it.cantidad, it.preIni, costoIni);
sCostoIni += costoIni;
}
System.out.printf("Total:\t\t\t\t\t %6.2f\n", sCostoIni);
}
static void mercado(){
System.out.println("\nCambios en el mercado:");
System.out.println("item " + 2 + ": se eliminó");
Item it = lista.remove(2-1); // remove Item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 2, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 3 + ": se insertó");
it = new Item(Character.toString(lNombre++), random(1, 10), random(1, 10));
lista.add(3-1, it); // inserta item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 3, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 4 + ": se modificó la unidad a Bolsa");
it = lista.get(4-1);
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 4, it.nombre, it.unidad, it.cantidad, it.preIni);
it.unidad = "Bolsa"; // Modifica item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 4, it.nombre, it.unidad, it.cantidad, it.preIni);
for(Item lis: lista) lis.preFin += lis.preIni +random(-2, 2); // cálculo de precios Finales
}
static void informeFinal(){
System.out.println();
System.out.println("Lista de Compras Final:");
System.out.println("Item\tNombre\tUnidad\tCant.\tPreIni\t PreFin\t CIni CFin\t CFin-CIni ");
int i = 1;
float costoIni, sCostoIni = 0, costoFin, sCostoFin = 0, dif, sDif = 0;
for(Item it: lista) {
costoIni = it.getCostoIni();
costoFin = it.getCostoFin();
dif = costoFin - costoIni;
System.out.printf("%2d\t%4s\t%6s\t %2d\t%6.2f\t %6.2f\t %6.2f\t %6.2f\t %6.2f\n",
i++, it.nombre, it.unidad, it.cantidad, it.preIni, it.preFin, costoIni, costoFin, dif);
sCostoIni += costoIni;
sCostoFin += costoFin;
}
System.out.printf("Total:\t\t\t\t\t\t %6.2f\t %6.2f\t %6.2f\n",sCostoIni, sCostoFin, sCostoFin-sCostoIni);
new DB().saveLista(lista);
}
}
class Item{
String nombre;
String unidad;
int cantidad;
float preIni; // precio Inicial
float preFin; // precio Final
Item(String nombre, int cantidad, float preIni){
this.nombre = nombre;
this.cantidad = cantidad;
this.preIni = preIni;
unidad = "Kg.";
}
float getCostoIni(){return cantidad*preIni;}
float getCostoFin(){return cantidad*preFin;}
public String toString(){
return nombre + "\t" + unidad + "\t" + cantidad + "\t" + preFin;
}
}
class DB{
void saveLista(ArrayList<Item> lista){
try (PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter("listaIni.txt")))){
for(Item it: lista) out.println(it);
} catch (IOException e){ System.out.println(e);}
}
}
*/
A Kg. 1 7.0
C Kg. 1 7.0
J Kg. 5 5.0
D Bolsa 6 9.0
E Kg. 7 3.0
F Kg. 7 10.0
G Kg. 5 8.0
H Kg. 5 10.0
I Kg. 8 2.0