
import java.util.Scanner;

public class QuizJuegoTablaDeOperadores
{
  public static void main(String[] args) 
  { 
    boolean repito=false;
    while (repito==false)
    {
    Scanner teclado = new Scanner(System.in);
    System.out.println("\nTablas de operadores");
    System.out.print("\nOperador [+|-|*|/|%|Salir]: ");
    String operador = teclado.nextLine();
    
    if (operador.equalsIgnoreCase("salir"))
    {
     repito=true;
    }
    if (operador.equals("+")||operador.equals("-")||operador.equals("*")||operador.equals("/")||operador.equals("%"))
    {
      System.out.println("Valor minimo: ");
      double valorMinimo = teclado.nextDouble();
      System.out.println("Valor maximo: ");
      double valorMaximo = teclado.nextDouble();
      System.out.println("Incremento: ");
      double incremento = teclado.nextDouble();
     
        while(incremento<=0)
        {
        System.out.println("Incremento: ");
        incremento = teclado.nextDouble(); 
        }
     
      
        switch (operador)
        {
          case "+":
          {
            double i = valorMinimo;
            double j = valorMinimo;
            double b = 0.0;//contador 
            double bb = 0.0;//contador
            double bbb = 0.0;//contador
            
            for (int fila=-1;fila<=(((valorMaximo-valorMinimo)/incremento)+1);++fila)
            { 
              for(int columna=-1;columna<=(((valorMaximo-valorMinimo)/incremento)+1);++columna)
              {
                if (fila==-1 && columna==-1)
                {
                  System.out.printf("%5s","+");
                }
                if (fila==-1 && columna>0)
                {
                 System.out.printf("%5.1f",(j+bb));
                 System.out.printf("%2s"," ");
                 bb+=incremento;
                }
                if (fila>0 && columna==-1)
                {
                  System.out.printf("%5.1f",(j+bbb));
                 bbb+=incremento;
                }
                if (columna==0 && fila !=0)
                {
                   System.out.printf("%2s","|");
                }
                if (fila==0&& columna>1)
                {
                  System.out.printf("%7s","-------");
                }
                if (fila==0&& columna==1)
                {
                  System.out.printf("%12s","------------");
                }
               
                if(columna>=1 && fila>=1)
                {
                  System.out.printf("%5.1f",(i+(j+b)));
                  System.out.printf("%2s"," ");
                  b+=incremento;
                }
              }//for columnas
              
              if (fila>=1)
              {
                b=0;
                i+=incremento; 
              }
              System.out.println("");
            }//for fila
            break;
          }//case +
          
          case "-":
           {
            double i = valorMinimo;
            double j = valorMinimo;
            double b = 0.0;//contador 
            double bb = 0.0;//contador
            double bbb = 0.0;//contador
            
            for (int fila=-1;fila<=(((valorMaximo-valorMinimo)/incremento)+1);++fila)
            { 
              for(int columna=-1;columna<=(((valorMaximo-valorMinimo)/incremento)+1);++columna)
              {
                if (fila==-1 && columna==-1)
                {
                  System.out.printf("%5s","-");
                }
                if (fila==-1 && columna>0)
                {
                 System.out.printf("%5.1f",(j+bb));
                 System.out.printf("%2s"," ");
                 bb+=incremento;
                }
                if (fila>0 && columna==-1)
                {
                  System.out.printf("%5.1f",(j+bbb));
                 bbb+=incremento;
                }
                if (columna==0 && fila !=0)
                {
                   System.out.printf("%2s","|");
                }
                if (fila==0&& columna>1)
                {
                  System.out.printf("%7s","-------");
                }
                if (fila==0&& columna==1)
                {
                  System.out.printf("%12s","------------");
                }
               
                if(columna>=1 && fila>=1)
                {
                  System.out.printf("%5.1f",(i-(j+b)));
                  System.out.printf("%2s"," ");
                  b+=incremento;
                }
              }//for columnas
              
              if (fila>=1)
              {
                b=0;
                i+=incremento; 
              }
              System.out.println("");
            }//for fila
            break;
          }//case -
          
          case "*":
           {
            double i = valorMinimo;
            double j = valorMinimo;
            double b = 0.0;//contador 
            double bb = 0.0;//contador
            double bbb = 0.0;//contador
            
            for (int fila=-1;fila<=(((valorMaximo-valorMinimo)/incremento)+1);++fila)
            { 
              for(int columna=-1;columna<=(((valorMaximo-valorMinimo)/incremento)+1);++columna)
              {
                if (fila==-1 && columna==-1)
                {
                  System.out.printf("%5s","*");
                }
                if (fila==-1 && columna>0)
                {
                 System.out.printf("%5.1f",(j+bb));
                 System.out.printf("%2s"," ");
                 bb+=incremento;
                }
                if (fila>0 && columna==-1)
                {
                  System.out.printf("%5.1f",(j+bbb));
                 bbb+=incremento;
                }
                if (columna==0 && fila !=0)
                {
                   System.out.printf("%2s","|");
                }
                if (fila==0&& columna>1)
                {
                  System.out.printf("%7s","-------");
                }
                if (fila==0&& columna==1)
                {
                  System.out.printf("%12s","------------");
                }
               
                if(columna>=1 && fila>=1)
                {
                  System.out.printf("%5.1f",(i*(j+b)));
                  System.out.printf("%2s"," ");
                  b+=incremento;
                }
              }//for columnas
              
              if (fila>=1)
              {
                b=0;
                i+=incremento; 
              }
              System.out.println("");
            }//for fila
            break;
          }//case *
          case "/":
           {
            double i = valorMinimo;
            double j = valorMinimo;
            double b = 0.0;//contador 
            double bb = 0.0;//contador
            double bbb = 0.0;//contador
            
            for (int fila=-1;fila<=(((valorMaximo-valorMinimo)/incremento)+1);++fila)
            { 
              for(int columna=-1;columna<=(((valorMaximo-valorMinimo)/incremento)+1);++columna)
              {
                if (fila==-1 && columna==-1)
                {
                  System.out.printf("%5s","/");
                }
                if (fila==-1 && columna>0)
                {
                 System.out.printf("%5.1f",(j+bb));
                 System.out.printf("%2s"," ");
                 bb+=incremento;
                }
                if (fila>0 && columna==-1)
                {
                  System.out.printf("%5.1f",(j+bbb));
                 bbb+=incremento;
                }
                if (columna==0 && fila !=0)
                {
                   System.out.printf("%2s","|");
                }
                if (fila==0&& columna>1)
                {
                  System.out.printf("%7s","-------");
                }
                if (fila==0&& columna==1)
                {
                  System.out.printf("%12s","------------");
                }
               
                if(columna>=1 && fila>=1)
                {
                  System.out.printf("%5.1f",(i/(j+b)));
                  System.out.printf("%2s"," ");
                  b+=incremento;
                }
              }//for columnas
              
              if (fila>=1)
              {
                b=0;
                i+=incremento; 
              }
              System.out.println("");
            }//for fila
            break;
          }//case /
          case "%":
           {
            double i = valorMinimo;
            double j = valorMinimo;
            double b = 0.0;//contador 
            double bb = 0.0;//contador
            double bbb = 0.0;//contador
            
            for (int fila=-1;fila<=(((valorMaximo-valorMinimo)/incremento)+1);++fila)
            { 
              for(int columna=-1;columna<=(((valorMaximo-valorMinimo)/incremento)+1);++columna)
              {
                if (fila==-1 && columna==-1)
                {
                  System.out.printf("%5s","%");
                }
                if (fila==-1 && columna>0)
                {
                 System.out.printf("%5.1f",(j+bb));
                 System.out.printf("%2s"," ");
                 bb+=incremento;
                }
                if (fila>0 && columna==-1)
                {
                  System.out.printf("%5.1f",(j+bbb));
                 bbb+=incremento;
                }
                if (columna==0 && fila !=0)
                {
                   System.out.printf("%2s","|");
                }
                if (fila==0&& columna>1)
                {
                  System.out.printf("%7s","-------");
                }
                if (fila==0&& columna==1)
                {
                  System.out.printf("%12s","------------");
                }
               
                if(columna>=1 && fila>=1)
                {
                  System.out.printf("%5.1f",(i%(j+b)));
                  System.out.printf("%2s"," ");
                  b+=incremento;
                }
              }//for columnas
              
              if (fila>=1)
              {
                b=0;
                i+=incremento; 
              }
              System.out.println("");
            }//for fila
            break;
          }//case %
          
        }//switch
      } //opcion difente a salir
    }//while
  }//main
}//class