package tablas;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Tablas {

    public static void main(String[] args) {
       
        int minimo = 0;
        int maximo = 0;
        int incremento = 0;
        int operador = 0;

        boolean continuar = true;
        while (continuar) {
            boolean operadorCorrecto = false;
            while (!operadorCorrecto) {
                System.out.println("Digite un numero dependiendo la operacion deseada: [1 = +; 2 = -; 3 = *; 4 = /;] [0 = Salir]: ");
                operador = pedirNumero();
                operadorCorrecto = ((operador == 0) || (operador == 1) || (operador == 2) || (operador == 3) || (operador == 4));
            }
            if (operador != 0) {

                System.out.println("Digite un Numero Minimo: ");
                minimo = pedirNumero();

                System.out.println("Digite un Numero Maximo: ");
                maximo = pedirNumero();

                operadorCorrecto = false;

                while (!operadorCorrecto) {
                    System.out.println("Digite un incremento, debe ser mayor a cero: ");
                    incremento = pedirNumero();
                    operadorCorrecto = (incremento > 0);
                }
                String operadorString = "";
                if (operador == 1) {
                    operadorString = "+";
                }
                if (operador == 2) {
                    operadorString = "-";
                }
                if (operador == 3) {
                    operadorString = "*";
                }
                if (operador == 4) {
                    operadorString = "/";
                }

                String lineaFila = "    ";
                lineaFila += operadorString;
                lineaFila += "    ||";
                for (int i = minimo; i <= maximo; i = i + incremento) {
                    String numeroEnString = Integer.toString(i);
                    lineaFila += "     ";
                    lineaFila += numeroEnString;
                    lineaFila += "   ||";
                }
                System.out.println(lineaFila);

                for (int i = minimo; i <= maximo; i = i + incremento) {
                    lineaFila = "";
                    lineaFila += " | ";
                    lineaFila += Integer.toString(i);
                    lineaFila += "   ||";
                    for (int j = minimo; j <= maximo; j = j + incremento) {
                        int resultado = 0;
                        if (operador == 1) {
                            resultado = i + j;
                        }
                        if (operador == 2) {
                            resultado = i - j;
                        }
                        if (operador == 3) {
                            resultado = i * j;
                        }
                        if (operador == 4) {
                            resultado = i / j;
                        }
                        lineaFila += "    ";
                        lineaFila += Integer.toString(resultado);
                        lineaFila += "   |";

                    }
                    System.out.println(lineaFila);

                }
            } else {
                continuar = false;
            }
        }
    }

    public static int pedirNumero() {
        int entero = -1;
        try {
            String buffer = new BufferedReader(new InputStreamReader(System.in)).readLine();
            entero = Integer.parseInt(buffer);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return entero;
    }
}
