import java.util.Scanner; class Atoi { /* --- parseInt(s): Ascii to Integer conversion function --- */ private static int myParseInt(String s) { int startpos, sign; int value; char next_digit; int value_of_digit; int i; /* ------- Convert string to two's compl. representation ------- */ if (s.charAt(0) == '-') { sign = -1; startpos = 1; } else { sign = 1; startpos = 0; } /* ============================================================== E.g.: s = "123" i next_digit val_of_digit partial result --------------------------------------- value = 0 0 '1' '1'-'0'=1 value = 0*10 + 1 = 1 1 '2' '2'-'0'=2 value = 1*10 + 2 = 12 2 '3' '3'-'0'=3 value = 12*10 + 3 = 123 ============================================================== */ value = 0; for (i = startpos; i < s.length(); i++) { next_digit = s.charAt(i); value_of_digit = (int) next_digit - (int) '0'; value = 10*value + value_of_digit; } if (sign == -1) value = -value; return(value); } public static void main(String[] args) { Scanner in = new Scanner(System.in); String s1, s2; int i1, i2; System.out.print("Enter an integer (string) s1: "); s1 = in.next(); System.out.print("Enter an integer (string) s2: "); s2 = in.next(); System.out.println("s1 + s2 = " + (s1+s2) ); System.out.println(); i1 = myParseInt(s1); // Same effect as: i1 = Integer.parseInt(s1); !!!! i2 = myParseInt(s2); // Same effect as: i2 = Integer.parseInt(s2); System.out.println("i1 + i2 = " + (i1+i2) ); } }