Advertisement
Mouamle

Meh calc

Feb 28th, 2019
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.41 KB | None | 0 0
  1.  
  2. import java.util.Scanner;
  3.  
  4. public class Calc {
  5.  
  6.     private double a, b;
  7.     private boolean running = true;
  8.  
  9.     private final Scanner mScanner;
  10.  
  11.     public Calc() {
  12.         mScanner = new Scanner(System.in);
  13.         start();
  14.     }
  15.  
  16.     private void start() {
  17.         while (running) {
  18.             getInput();
  19.             processInput();
  20.         }
  21.         mScanner.close();
  22.     }
  23.  
  24.     private void processInput() {
  25.         System.out.println("1. Arithmetic");
  26.         System.out.println("2. Boolean");
  27.         System.out.println("3. Bitwise (Integers only!)");
  28.         System.out.println("4. Exit");
  29.         System.out.print("Select an operation: ");
  30.         int op = mScanner.nextInt();
  31.         switch (op) {
  32.             case 1:
  33.                 doArithmetic();
  34.                 break;
  35.             case 2:
  36.                 doBoolean();
  37.                 break;
  38.             case 3:
  39.                 doBitwise();
  40.                 break;
  41.             case 4:
  42.                 System.out.println("Exiting...");
  43.                 running = false;
  44.                 break;
  45.             default:
  46.                 System.err.println("Invalid operation");
  47.                 processInput();
  48.                 break;
  49.         }
  50.     }
  51.  
  52.  
  53.     private void doArithmetic() {
  54.         System.out.println("1. Add");
  55.         System.out.println("2. Subtract");
  56.         System.out.println("3. Multiply");
  57.         System.out.println("4. Divide");
  58.         System.out.println("5. Modulo");
  59.         System.out.println("6. Power");
  60.         System.out.println("7. Root");
  61.         System.out.println("8. Natural log");
  62.         System.out.print("Select an operation: ");
  63.  
  64.         int op = mScanner.nextInt();
  65.  
  66.         if (op < 9 && op > 0) {
  67.             System.out.print("The result is: ");
  68.         }
  69.  
  70.         switch (op) {
  71.             case 1:
  72.                 System.out.println(a + b);
  73.                 break;
  74.             case 2:
  75.                 System.out.println(a - b);
  76.                 break;
  77.             case 3:
  78.                 System.out.println(a * b);
  79.                 break;
  80.             case 4:
  81.                 System.out.println(a / b);
  82.                 break;
  83.             case 5:
  84.                 System.out.println(a % b);
  85.                 break;
  86.             case 6:
  87.                 System.out.println(Math.pow(a, b));
  88.                 break;
  89.             case 7:
  90.                 System.out.println(Math.pow(a, 1 / b));
  91.                 break;
  92.             case 8:
  93.                 System.out.println(Math.log(a) + ", " + Math.log(b));
  94.                 break;
  95.             default:
  96.                 System.err.println("Invalid operation");
  97.                 doArithmetic();
  98.                 break;
  99.         }
  100.     }
  101.  
  102.     private void doBoolean() {
  103.         System.out.println("1. Greater");
  104.         System.out.println("2. Greater than or equal");
  105.         System.out.println("3. Smaller");
  106.         System.out.println("4. Smaller than or equal");
  107.         System.out.println("5. Logical equal");
  108.         System.out.print("Select an operation: ");
  109.  
  110.         int op = mScanner.nextInt();
  111.  
  112.         if (op < 6 && op > 0) {
  113.             System.out.print("The result is: ");
  114.         }
  115.  
  116.         switch (op) {
  117.             case 1:
  118.                 System.out.println(a > b);
  119.                 break;
  120.             case 2:
  121.                 System.out.println(a >= b);
  122.                 break;
  123.             case 3:
  124.                 System.out.println(a < b);
  125.                 break;
  126.             case 4:
  127.                 System.out.println(a <= b);
  128.                 break;
  129.             case 5:
  130.                 System.out.println(a == b);
  131.                 break;
  132.             default:
  133.                 System.err.println("Invalid operation");
  134.                 doBoolean();
  135.                 break;
  136.         }
  137.     }
  138.  
  139.     private void doBitwise() {
  140.         System.out.println("1. AND");
  141.         System.out.println("2. OR");
  142.         System.out.println("3. XOR");
  143.         System.out.println("4. NAND");
  144.         System.out.println("5. NOR");
  145.         System.out.println("6. Shift left");
  146.         System.out.println("7. Shift right");
  147.         System.out.print("Select an operation: ");
  148.  
  149.         int op = mScanner.nextInt();
  150.  
  151.         if (op < 8 && op > 0) {
  152.             System.out.print("The result is: ");
  153.         }
  154.  
  155.         int iA = (int) a;
  156.         int iB = (int) b;
  157.  
  158.         switch (op) {
  159.             case 1:
  160.                 System.out.println(iA & iB);
  161.                 break;
  162.             case 2:
  163.                 System.out.println(iA | iB);
  164.                 break;
  165.             case 3:
  166.                 System.out.println(iA ^ iB);
  167.                 break;
  168.             case 4:
  169.                 // TODO: Implement NAND
  170.                 break;
  171.             case 5:
  172.                 System.out.println(~(iA | iB));
  173.                 break;
  174.             case 6:
  175.                 System.out.println(iA << iB);
  176.                 break;
  177.             case 7:
  178.                 System.out.println(iA >> iB);
  179.                 break;
  180.             default:
  181.                 System.err.println("Invalid operation");
  182.                 doBitwise();
  183.                 break;
  184.         }
  185.  
  186.     }
  187.  
  188.     private void getInput() {
  189.         System.out.print("Enter the first number: ");
  190.         a = mScanner.nextDouble();
  191.         System.out.print("Enter the second number: ");
  192.         b = mScanner.nextDouble();
  193.     }
  194.  
  195.     public static void main(String[] args) {
  196.         new Calc();
  197.     }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement