Move History

Fork Selected
  • Code
    interface Calculator {
      static int calculate(int a, int b, char operation) {
        int result = 0;
        switch(operation) {
            case '+':
            result = a + b; break;
            case '-':
            result = a - b; break;
            case '*':
            result = a * b; break;
            default:
            System.exit(0); break;
        }
        return result;
      }
    }
    
    Test Cases
    import static java.util.concurrent.ThreadLocalRandom.current;
    import static org.junit.jupiter.api.Assertions.assertEquals;
    
    import org.junit.jupiter.api.Test;
    
    class CalculatorTest {
      @Test
      void sample() {
        assertEquals(9, Calculator.calculate(4, 5, '+'));
        assertEquals(7, Calculator.calculate(12, 5, '-'));
        assertEquals(60, Calculator.calculate(20, 3, '*'));
      }
    
      @Test
      void random() {
        for (int i = 0; i < 100; i++) {
          var pair = current().ints(2, -1000, 1000).toArray();
          assertEquals(pair[0] + pair[1], Calculator.calculate(pair[0], pair[1], '+'));
          assertEquals(pair[0] - pair[1], Calculator.calculate(pair[0], pair[1], '-'));
          assertEquals(pair[0] * pair[1], Calculator.calculate(pair[0], pair[1], '*'));
        }
      }
    }
  • Code
    • import javax.script.ScriptEngineManager;
    • interface Calculator {
    • static int calculate(int a, int b, char operation) {
    • var engine = new ScriptEngineManager().getEngineByName("JavaScript");
    • try {
    • return Integer.parseInt(String.valueOf(engine.eval(a + " " + operation + " " + b)));
    • } catch (Exception cause) {
    • return 0;
    • int result = 0;
    • switch(operation) {
    • case '+':
    • result = a + b; break;
    • case '-':
    • result = a - b; break;
    • case '*':
    • result = a * b; break;
    • default:
    • System.exit(0); break;
    • }
    • return result;
    • }
    • }