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;
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(){
lista = new DB().getLista(lista);
System.out.println("Lista de Compras Inicial:\nItem\tNombre\tUnidad\tCant.\t PreIni\tCostoIni");
int 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;
lNombre = it.nombre.charAt(0);
}
lNombre++;
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 " + 5 + ": se eliminó");
Item it = lista.remove(5-1); // remove Item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 5, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 6 + ": se insertó");
it = new Item(Character.toString(lNombre++), random(1, 10), random(1, 10));
lista.add(6-1, it); // inserta item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 6, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 7 + ": se modificó la unidad a Bolsa");
it = lista.get(7-1);
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 7, 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", 7, 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);}
}
ArrayList<Item> getLista(ArrayList<Item> lista){
String line;
String[] columns;
String nombre, unidad, cantidad, preIni;
try (BufferedReader in = new BufferedReader(
new FileReader("listaIni.txt"))){
line = in.readLine();
while(line != null) {
columns = line.split("\t");
nombre = columns[0];
unidad = columns [1];
cantidad = columns[2];
preIni = columns[3];
Item it = new Item(nombre, Integer.parseInt(cantidad), Float.parseFloat(preIni));
it.unidad = unidad;
lista.add(it);
line = in.readLine();
}
} catch (IOException e){ System.out.println(e);}
return lista;
}
}
/*
import java.util.ArrayList;
import java.util.Random;
import java.io.*;
public class Main{
//class ListaApp2{
static ArrayList <Item> lista = new ArrayList<>();
static Random rand = new Random();
static char lNombre;
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(){
lista = new DB().getLista(lista);
System.out.println("Lista de Compras Inicial:\nItem\tNombre\tUnidad\tCant.\t PreIni\tCostoIni");
int 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;
lNombre = it.nombre.charAt(0);
}
lNombre++;
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 " + 5 + ": se eliminó");
Item it = lista.remove(5-1); // remove Item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 5, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 6 + ": se insertó");
it = new Item(Character.toString(lNombre++), random(1, 10), random(1, 10));
lista.add(6-1, it); // inserta item
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 6, it.nombre, it.unidad, it.cantidad, it.preIni);
System.out.println("\nitem " + 7 + ": se modificó la unidad a Bolsa");
it = lista.get(7-1);
System.out.printf("%2d\t%4s\t%5s\t%2d\t%6.2f\n", 7, 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", 7, 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 getCostoFinal(){
return cantidad*preFinal;
}
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);
}
}
ArrayList<Item> getLista(ArrayList<Item> lista){
String line;
String[] columns;
String nombre, unidad, cantidad, preIni;
try (BufferedReader in = new BufferedReader(new FileReader("listaIni.txt"))){
line = in.readLine(); // lee linea por linea
while(line != null) {
columns = line.split("\t");
nombre = columns[0];
unidad = columns [1];
cantidad = columns[2];
preIni = columns[3];
Item it = new Item(nombre, Integer.parseInt(cantidad), Float.parseFloat(preIni));
it.unidad = unidad;
lista.add(it);
line = in.readLine();
}
} catch (IOException e){
System.out.println(e);
}
return lista;
}
}
*/
A Kg. 1 10.0
C Kg. 7 1.0
J Kg. 4 7.0
D Bolsa 9 12.0
J Kg. 2 5.0
J Kg. 4 9.0
G Bolsa 5 5.0
H Kg. 5 3.0
I Kg. 10 4.0