online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
// Para la base de datos se usa la colección HashMap import java.util.Scanner; import java.util.HashMap; import java.util.Calendar; import java.util.GregorianCalendar; public class Main{ //public class PagoAppA{ static TarjetaDAO td = new TarjetaDAO(); // Base de datos static Pago pago = new Pago(); // Datos del pago static Scanner sc = new Scanner(System.in); static int pagoE, pagoT; public static void main(String[] args){ System.out.println("Bienvenidos a la Casa del Pago"); for(int i=0; i<3; i++) pagar(); System.out.println("\nTotal pago Efectivo : " + pagoE); System.out.println("Total pago con tarjetas: " + pagoT); System.out.println("Total pagos : " + (pagoE+ pagoT)); System.out.println("Muchas gracias por su visita."); } static void pagar(){ // monto System.out.println("\nPago de teléfono"); pago.monto = Validator.getInt(sc, "Monto: ", 0); // forma de pago System.out.println("Formas de pago: "); System.out.println(" Tarjeta : T"); System.out.println(" Efectivo: E"); pago.formaPago = Validator.getChar(sc, "Elija la forma de pago (T/E): ", "TE"); // tarjeta if(pago.formaPago.equals("E")) { pagoE += pago.monto; pago.check=2; } if(pago.formaPago.equals("T")){ System.out.println("Tarjetas:"); System.out.println(" American Express: A"); System.out.println(" Visa: V"); System.out.println(" Master Card: M"); pago.tipoTarjeta = Validator.getChar(sc, "Elija la tarjeta (A/V/M): ", "AVM"); pago.numero = Validator.getInt(sc, "Número de tarjeta: ", 1); td.validarTarjeta(pago); if(pago.check==0) System.out.println("Lo sentimos número de tarjeta no válido."); if(pago.check==1) System.out.println("Lo sentimos su tarjeta está vencida: " + pago.mes + ":" + pago.ano + ","); if(pago.check==2) { pagoT += pago.monto; System.out.println("Tarjeta: " + pago.tipoTarjeta + " " + pago.numero + " " + pago.mes + " " + pago.ano); } } if(pago.check==2) System.out.println("Gracias por su pago."); } } class Pago{ // datos del pago int monto; String formaPago; String tipoTarjeta; int numero; int mes; int ano; int check; } class Tarjeta{ // tabla auxiliar int ano; int mes; public Tarjeta (int ano, int mes){ this.ano = ano; this.mes = mes; } } class TarjetaDAO{ // base de datos // HashMap no garantiza ningún orden en la clave; // No garantiza que se mantenga el orden constante a lo largo del tiempo. HashMap<String, String> tarjetas = new HashMap<>(); // Tabla de clases de tarjetas HashMap<Integer, Tarjeta> vis = new HashMap<>(); // Tabla de Visa HashMap<Integer, Tarjeta> mas = new HashMap<>(); // Tabla de Master card HashMap<Integer, Tarjeta> aex = new HashMap<>(); // tabla de American express public TarjetaDAO(){ // constructor tarjetas.put("V", "Visa"); tarjetas.put("M", "Master Card"); tarjetas.put("A", "American Express"); vis.put(1, new Tarjeta(2019, 1)); vis.put(2, new Tarjeta(2019, 1)); vis.put(3, new Tarjeta(2019, 1)); mas.put(1, new Tarjeta(2023, 1)); mas.put(2, new Tarjeta(2023, 11)); mas.put(3, new Tarjeta(2023, 12)); aex.put(1, new Tarjeta(2024, 1)); aex.put(2, new Tarjeta(2024, 1)); aex.put(3, new Tarjeta(2024, 1)); } void validarTarjeta(Pago pago){ Tarjeta tar = null; pago.check = 0; switch (pago.tipoTarjeta){ case "V": if(vis.containsKey(pago.numero)) {tar = (Tarjeta)vis.get(pago.numero); pago.check=1;} break; case "M": if(mas.containsKey(pago.numero)) {tar = (Tarjeta)mas.get(pago.numero); pago.check=1;} break; case "A": if(aex.containsKey(pago.numero)) {tar = (Tarjeta)aex.get(pago.numero); pago.check=1;} } if(pago.check==1){ GregorianCalendar gc = new GregorianCalendar(); int gAno = gc.get(Calendar.YEAR); int gMes = gc.get(Calendar.MONTH) + 1; if(gAno < tar.ano || gAno == tar.ano && gMes <= tar.mes) pago.check=2; } pago.ano = tar.ano; pago.mes = tar.mes; } } class Validator { public static String getString(Scanner sc, String prompt){ System.out.print(prompt); String s = sc.next(); sc.nextLine(); return s; } public static String getChar(Scanner sc, String prompt, String ch){ String st=""; boolean isValid = false; while (isValid == false){ st = getString(sc, prompt).toUpperCase(); if (st.length()==1 && ch.indexOf(st)>-1) isValid = true; } return st; } 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("Error: Valor entero no válido. Repita la entrada."); sc.nextLine(); } return i; } public static int getInt(Scanner sc, String prompt, int min){ int i = 0; boolean isValid = false; while (isValid == false){ i = getInt(sc, prompt); if (i < min) System.out.println("Error! El número debe ser mayor o igual que " + min + "."); else isValid = true; } 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! El número debe ser mayor o igual que " + min + "."); else if (i > max) System.out.println("Error El número debe ser menor o igual que " + max + "."); else isValid = true; } return i ; } public static float getFloat(Scanner sc, String prompt){ float d = 0 ; boolean isValid = false; while (isValid == false){ System.out.print(prompt) ; if (sc.hasNextFloat()){ d = sc.nextFloat(); isValid = true; } else System.out.println("Error! Valor decimal no válido. Intente de nuevo."); sc.nextLine(); } return d; } public static float getFloat(Scanner sc, String prompt, float min, float max) { float d = 0 ; boolean isValid = false; while (isValid == false){ d = getFloat(sc, prompt); if (d < min) System.out.println("Error! El número debe ser mayor o igual que " + min + "."); else if (d > max) System.out.println("Error! El número debe ser menor o igual que " + max + "."); else isValid = true; } return d; } }

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