package me.ramswaroop.bits;
/**
* Created by IntelliJ IDEA.
*
* @author: ramswaroop
* @date: 6/4/15
* @time: 4:28 PM
*/
public class IntegerOverflow {
/**
* Adds {@param a} and {@param b} and if the result can't
* be stored as an integer it throws an exception
*
* @param a
* @param b
* @return
*/
public static int add(int a, int b) throws Exception {
if (a > Integer.MAX_VALUE - b) {
throw new Exception("Integer Overflow");
} else {
return a + b;
}
}
/**
* Adds {@param a} and {@param b} and if the result can't
* be stored as an integer it throws an exception
*
* @param a
* @param b
* @return
*/
public static int add_V1(int a, int b) throws Exception {
if ((a > 0 && b > 0 && a + b < 0) || (a < 0 && b < 0 && a + b > 0)) {
throw new Exception("Integer Overflow");
} else {
return a + b;
}
}
public static void main(String a[]) {
try {
System.out.println(add(2, 3));
System.out.println(add(2147483647, 999999999));
System.out.println(add(-2147483647, -999999999));
System.out.println(add_V1(2, 3));
System.out.println(add_V1(2147483647, 999999999));
System.out.println(add_V1(-2147483647, -999999999));
} catch (Exception e) {
e.printStackTrace();
}
}
}