online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
import java.util.Scanner; import java.text.NumberFormat; import java.util.*; import java.io.*; import java.nio.file.*; import java.util.ArrayList; public class Main{ //public class ProductMaintApp{ // declara 2 variables de clase private static ProductDAO productDAO = null; private static Scanner sc = null; public static void main(String args[]){ System.out.println("Bienvenido a la aplicación de Mantenimiento de productos \n"); // set de las variables de clase productDAO = DAOFactory.getProductDAO(); // conexión con la base de datos sc = new Scanner(System.in); displayMenu(); String action = "" ; while (!action.equalsIgnoreCase("sale")){ action = Validator.getString(sc, "Ingrese un comando: "); System.out.println() ; if (action.equalsIgnoreCase("list")) displayAllProducts () ; else if (action.equalsIgnoreCase("add")) addProduct();else if (action.equalsIgnoreCase("eli")) deleteProduct(); else if (action.equalsIgnoreCase("menu")) displayMenu(); else if (action.equalsIgnoreCase("sale")) System.out.println("Adios.\n"); else System.out.println("Error! comando no válido.\n"); } } public static void displayMenu(){ System.out.println("MENU DE COMMADOS"); System.out.println("list - Lista todos los productos"); System.out.println("add - Añade un producto"); System.out.println("eli - Elimina un producto"); System.out.println("menu - Muestra este menu"); System.out.println("sale - salida de la aplicación\n"); } public static void displayAllProducts (){ System.out.println("LISTA DE PRODUCTOS"); System.out.println(productDAO.getProductsString()); } public static void addProduct(){ String code = Validator.getString(sc, "Ingrese el código de producto: "); String description = Validator.getString(sc, "Ingrese la descripción de producto: "); double price = Validator.getDouble(sc, "Ingrese el precio: "); Product product = new Product(); product.setCode(code); product.setDescription(description); product.setPrice(price); productDAO.addProduct(product); // añade un producto a la base de datos System.out.println(); System.out.println(description + " ha sido añadido.\n"); } public static void deleteProduct(){ String code = Validator.getString(sc,"Ingrese el código a eliminar: "); Product p = productDAO.getProduct(code); // elimina un producto de la base de datos System.out.println(); if (p != null){ productDAO.deleteProduct(p); System.out.println(p.getDescription() + " ha sido eliminado.\n"); }else System.out.println("Ningún producto tiene este código.\n"); } } class DAOFactory{ public static ProductDAO getProductDAO(){ // método ProductDAO pDAO = new ProductFile(); return pDAO; } } interface ProductReader{ Product getProduct(String code); String getProductsString(); } interface ProductWriter { boolean addProduct(Product p) ; boolean updateProduct(Product p ) ; boolean deleteProduct(Product p ) ; } interface ProductConstants { int CODESIZE = 4; int DESCRIPTIONSIZE = 40; } interface ProductDAO extends ProductReader, ProductWriter, ProductConstants{ } final class ProductFile implements ProductDAO{ private ArrayList<Product> products = null; private Path productsPath = null; private File productsFile = null; private final String FIELD_SEP = "\t"; public ProductFile() { productsPath = Paths.get("products.txt"); productsFile = productsPath.toFile(); products = getProducts(); } public String getProductsString(){ String sp = ""; if (Files.exists(productsPath)) { // previene FileNotFoundException try (BufferedReader in = new BufferedReader( new FileReader(productsFile))) { // leer todos los productos almacenados en el archivo al array list String line = in.readLine(); while(line != null){ String[] columns = line.split("\t"); sp += columns[0] + "\t"; sp += columns[1] + "\t"; sp += columns[2]+ "\n"; line = in.readLine(); } } catch(IOException e){ System.out.println(e) ; return null; } } return sp; } public Product getProduct(String code) { for (Product p : products) if (p.getCode().equals(code)) return p; return null; } private boolean saveProducts(){ try (PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter(productsFile)))){ for (Product p : products){ // escribe products del array list al archivo out.print(p.getCode() + "\t"); out.print(p.getDescription() + "\t"); out.println(p.getPrice()); } }catch(IOException e){ System.out.println(e); return false; } return true; } public boolean addProduct(Product p){ products.add(p); return saveProducts(); } public boolean deleteProduct(Product p) { products.remove(p); return saveProducts(); } public boolean updateProduct(Product newProduct){ // Toma el product viejo y lo remueve Product oldProduct = getProduct(newProduct.getCode()); int i = products.indexOf(oldProduct); products.remove(i); products.add(i, newProduct); // añade product actualizado return saveProducts(); } public ArrayList<Product> getProducts(){ if (products != null) return products; products = new ArrayList<>() ; if (Files.exists(productsPath)){ try (BufferedReader in = new BufferedReader( new FileReader(productsFile))){ String line = in.readLine(); while(line != null){ String [] columns = line.split(FIELD_SEP); String code = columns[0]; String description = columns [1]; String price = columns[2]; Product p = new Product(code, description, Double.parseDouble(price)); products.add(p); line = in.readLine(); } } catch(IOException e){ System.out.println(e) ; return null; } } return products; } } class Validator { public static String getString(Scanner sc, String prompt){ System.out.print(prompt); String s = sc.next(); sc.nextLine(); return s; } public static int getInt(Scanner sc, String prompt){ int i = 0 ; boolean isValid = false; while (isValid == false){ System.out.print(prompt); if (sc.hasNextInt()){ i = sc.nextInt(); isValid = true; } else System.out.println("Err()rl Invalid integer value. Try again."); sc.nextLine(); } return i; } public static int getInt(Scanner sc, String prompt, int min, int max){ int i = 0; boolean isValid = false; while (isValid == false){ i = getInt(sc, prompt); if (i <= min) System.out.println("Error! Number must be greater than " + min + "."); else if (i >= max) System.out.println("Err()rl Number must be less than " + max + "."); else isValid = true; } return i ; } public static double getDouble(Scanner sc, String prompt){ double d = 0 ; boolean isValid = false; while (isValid == false){ System.out.print(prompt); if (sc.hasNextDouble()){ d = sc.nextDouble(); isValid = true; } else System.out.println("Error! Invalid decimal value. Try again."); sc.nextLine(); } return d; } public static double getDouble(Scanner sc, String prompt, double min, double max) { double d = 0 ; boolean isValid = false; while (isValid == false){ d = getDouble(sc, prompt); if (d <= min) System.out.println("Error! Number must be greater than " + min + "."); else if (d >= max) System.out.println("Err()r! Number must be less than " + max + "."); else isValid = true; } return d; } } class Product{ private String code; private String description; private double price; public Product(){ code = ""; description = ""; price = 0.0; } public Product(String code, String description, double price){ this.code = code; this.description = description; this.price = price; } public void setCode(String code){this.code = code;} public String getCode(){return code;} public void setDescription(String description){this.description = description;} public String getDescription(){return description;} public void setPrice(double price){this.price = price;} public double getPrice(){return price;} public String getFormattedPrice(){ NumberFormat currency = NumberFormat.getCurrencyInstance(); return currency.format(price); } }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue