How to Add Two Integers Without Arithmetic Operator in Java

The challenge

Given two integers a, b, find The sum of them, BUT You are not allowed to use the operators + and –

Notes

  • The numbers (a,b) may be positive , negative values or zeros .
  • Returning value will be an integer .
  • Java: the following methods are prohibited: addExactaveragecollectdecrementincrementnextAfternextDownnextUpreducesubtractExactsumsumming .
    The following classes are prohibited: BigDecimal and BigInteger .

Examples

1- Add (5,19) ==> return (24) 2- Add (-27,18) ==> return (-9) 3- Add (-14,-16) ==> return (-30)
Code language: PHP (php)

The solution in Java code

Option 1:

public class Solution { public static int add(int x, int y) { if(y == 0) return x; int er = x ^ y; int ar = (x & y) << 1; return add(er, ar); } }
Code language: Java (java)

Option 2:

import java.util.concurrent.atomic.AtomicInteger; public class Solution { public static int add(int a, int b) { return (int)(new AtomicInteger(a)).addAndGet(b); } }
Code language: Java (java)

Option 3:

public class Solution { public static int add(int x, int y) { return x \u002b y; } }
Code language: Java (java)

Test cases to validate our solution

import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SumTwoIntgers { @Test public void checkPositiveValues() { assertEquals( 3, Solution.add(1,2)); assertEquals(24, Solution.add(5,19)); assertEquals(40, Solution.add(23,17)); } @Test public void checkNegativeValues() { assertEquals( -30, Solution.add(-14,-16)); assertEquals(-226, Solution.add(-50,-176)); assertEquals( -39, Solution.add(-10,-29)); } @Test public void checkMixtureValues() { assertEquals( 0, Solution.add(-13,13)); assertEquals( -9, Solution.add(-27,18)); assertEquals(-60, Solution.add(-90,30)); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments