Advertisement
FacundoSalazar

Java Calculator

Jan 17th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.23 KB | None | 0 0
  1. /**
  2.  *
  3.  * Calculadora Basica
  4.  * https://www.lawebdelprogramador.com/codigo/Java/4241-Calculadora-Basica.html
  5.  * Testeado en NetBeans IDE 8.2
  6.  * Facundo Ocampo Salazar
  7.  */
  8.  
  9. package calculadora;
  10.  
  11. import java.util.Scanner; // Importación de la clase Scanner.5
  12.  
  13. public class Calculadora{
  14.  
  15.   public static void main(String[] args) {
  16.  
  17.         Scanner sc = new Scanner(System.in);
  18.  
  19.         double res = 0;
  20.  
  21.         String operacion;
  22.  
  23.         boolean comprobar = false;
  24.  
  25.  
  26.         do{
  27.  
  28.             //Verificación de los datos puestos por el usuario del número 1.
  29.  
  30.             /* Con matches, hay una condición de que dígitos primero puede
  31.  
  32.             poner el usuario, en la condicional tenemos primero que solo se admite los caracteres '+' y '-', pero con la condición de que sea una sola vez o ninguna vez. Después tenemos que se admiten cualquier número del 0 al 9 y que se ponga o 0 veces o más veces, es decir, se pone algo o no se pone nada. Mas otra condición de que solo admite el carácter '.' una o ninguna vez. Seguido del punto, si es que se coloca, se admite cualquier número del 0 al 9 que sea una o más veces.*/
  33.  
  34.             String numero1;
  35.  
  36.             do {
  37.  
  38.                 System.out.println("\n Por favor, dame el primer número de la operación. ");
  39.  
  40.                 numero1 = sc.nextLine();
  41.  
  42.             } while (!numero1.matches("[+-]?[\\d]*[.]?[\\d]+"));
  43.  
  44.             double nume1 = Double.parseDouble(numero1);
  45.  
  46.             double n1 = new Double(numero1);
  47.  
  48.             // Fin de la verificación de los datos puestos por el usuario del número 1.
  49.  
  50.  
  51.             do {
  52.  
  53.                 System.out.println("\n ¿Que operación desea hacer? (Solo coloque un signo)");
  54.  
  55.                 System.out.println("Teniendo en cuenta que: \n + = sumar \n - = restar \n"
  56.  
  57.                         + " x = multiplicar \n / = dividir \n * = elevar primer número al segundo numero."
  58.  
  59.                         + "\n % = residuo");
  60.  
  61.             operacion = sc.nextLine();
  62.  
  63.                 if (operacion.equals("+") || operacion.equals("-") || operacion.equals("x") ||
  64.  
  65.                     operacion.equals("X") || operacion.equals("/") || operacion.equals("%") ||
  66.  
  67.                     operacion.equals("*")) {
  68.  
  69.                     comprobar = true;
  70.  
  71.                 }else { comprobar = false; }
  72.  
  73.             } while (comprobar != true);
  74.  
  75.  
  76.  
  77.             // Verificación de los datos puestos por el usuario del número 2.
  78.  
  79.             String numero2;
  80.  
  81.             do {
  82.  
  83.                 System.out.println("\n Por favor, dame el segundo número.");
  84.  
  85.                 numero2 = sc.nextLine();
  86.  
  87.             } while (!numero2.matches("[+-]?[\\d]*[.]?[\\d]+"));
  88.  
  89.             double nume2 = Double.parseDouble(numero2);
  90.  
  91.             double n2 = new Double(numero2);
  92.  
  93.             // Fin de la verificación de los datos puestos por el usuario del número 2.
  94.  
  95.  
  96.  
  97.             do{
  98.  
  99.                 comprobar = true;
  100.  
  101.                 switch(operacion){
  102.  
  103.                     case "+":
  104.  
  105.                         res = n1 + n2;
  106.  
  107.                         break;
  108.  
  109.                     case "-":
  110.  
  111.                         res = n1 - n2;
  112.  
  113.                         break;
  114.  
  115.                     case "x":
  116.  
  117.                     case "X":
  118.  
  119.                         res = n1 * n2;
  120.  
  121.                         break;
  122.  
  123.                     case "/":
  124.  
  125.                         /* Por tal de evitar errores y añadir números complejos, si el usuario coloca 0 como segundo número, se piensa entonces que el denominador es 0, y por ello añado una condicional que lo verifique, y para hacer el codigo mas dinamico y no solo añadir un 1, le vuelvo a preguntar al usuario que añada un número distinto, podría volver a colocar 0, y es la razón por la que se encuentra en un ciclo, así que mientras n2 sea 0, el código seguirá ejecutando hasta que ponga otro. */
  126.  
  127.                         while(n2 == 0){
  128.  
  129.                                  do {
  130.  
  131.                                     System.err.println(" En el denominador se encuentra \n"
  132.  
  133.                                             + "un cero, para evitar errores coloca otro número.");
  134.  
  135.                                     numero2 = sc.nextLine();
  136.  
  137.                                 }while (!numero2.matches("[+-]?[\\d]*[.]?[\\d]+"));
  138.  
  139.                                     nume2 = Double.parseDouble(numero2);
  140.  
  141.                                     n2 = new Double(numero2);
  142.  
  143.                         }
  144.  
  145.                         res = n1 / n2;
  146.  
  147.                         break;
  148.  
  149.                     case "*":
  150.  
  151.                         res = Math.pow(n1, n2);
  152.  
  153.                         break;
  154.  
  155.                     case "%":
  156.  
  157.                         while(n2 == 0){
  158.  
  159.                                  do {
  160.  
  161.                                     System.err.println(" En el denominador se encuentra \n"
  162.  
  163.                                             + "un cero, para evitar errores coloca otro número.");
  164.  
  165.                                     numero2 = sc.nextLine();
  166.  
  167.                                 }while (!numero2.matches("[+-]?[\\d]*[.]?[\\d]+"));
  168.  
  169.                                     nume2 = Double.parseDouble(numero2);
  170.  
  171.                                     n2 = new Double(numero2);
  172.  
  173.                         }
  174.  
  175.                         res = n1 % n2;
  176.  
  177.                         break;
  178.  
  179.                 }
  180.  
  181.             }while(comprobar != true);
  182.  
  183.  
  184.             System.out.println("(" + numero1 + ") " + operacion + " (" + numero2 + ")" + " = " + res);
  185.  
  186.             System.out.println("\n ¿Desea hacer alguna otra operación? \n");
  187.  
  188.             System.out.println(" [s/n]");
  189.  
  190.             do{
  191.  
  192.                 comprobar = true;
  193.  
  194.                 operacion = sc.nextLine();
  195.  
  196.                 switch (operacion) {
  197.  
  198.                     case "s":
  199.  
  200.                     case "S":
  201.  
  202.                     case "n":
  203.  
  204.                     case "N":
  205.  
  206.                         break;
  207.  
  208.                     default:
  209.  
  210.                         System.err.println("\n Error, ponga un literal valido. \n");
  211.  
  212.                         comprobar = false;
  213.  
  214.                 }
  215.  
  216.             }while(comprobar != true);
  217.  
  218.         }while(operacion.equals("s") || operacion.equals("S"));
  219.  
  220.   }
  221.  
  222. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement