Problem: Write a function to convert an ASCII string to integer, similar to atoi() function of C++.
Solution: The solution is too simple, it's simple checks for erroneous inputs that makes writing such a function fun.
Solution: The solution is too simple, it's simple checks for erroneous inputs that makes writing such a function fun.
public class AsciiToInteger { public static void main(String[] args) { AsciiToInteger instance = new AsciiToInteger(); int x = instance.atoi("-683"); System.out.println("Conversion is: " + x); } private int atoi(String number) { // check for NULL or empty if(number == null || number.trim().length() == 0) { throw new IllegalArgumentException("Number cannot be null/empty."); } // create a variable to store the result int result = 0; // trim the number number = number.trim(); // check for sign as the first character boolean negate = false; char sign = number.charAt(0); if(sign == '+' || sign == '-') { if(sign == '-') { negate = true; } number = number.substring(1); } int length = number.length(); for(int index = 0; index < length; index++) { char digit = number.charAt(index); // sanitize the digit if(!(digit >= '0' && digit <= '9')) { throw new IllegalArgumentException("Number contains characters other than digits at index " + index); } digit = (char) (digit - '0'); result += (digit * Math.pow(10, (length - index - 1))); } // if negative, do it if(negate) { result = 0 - result; } // return the final result return result; } }
0 comments:
Post a Comment