import java.util.Scanner; class Base5 { /* --- atoi(s): Ascii to Integer conversion function in base 5 --- */ private static int atoi(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; } value = 0; for (i = startpos; i < s.length(); i++) { next_digit = s.charAt(i); value_of_digit = (int) next_digit - (int) '0'; value = 5*value + value_of_digit; } if (sign == -1) value = -value; return(value); } public static String itoa(int value) { int sign, i, j; String result; char next_char; int next_digit; /* ------- Handle trivial case... ------- */ if (value == 0) return("0"); /* ------- Check sign ------- */ if (value < 0) { sign = -1; value = -value; } else { sign = 1; } /* ------- Convert number part ------- */ result = ""; do { next_digit = value % 5; next_char = (char) (next_digit + '0') ; result = next_char + result; // Append at front !! value = value / 5; } while (value > 0); // Put in the negative sign.... if (sign == -1) { result = "(minus)" + result; } else { result = "+" + result; // optional... } return(result); } public static void main(String[] args) { Scanner in = new Scanner(System.in); String s1, s2; int i1, i2; System.out.print("Enter an base 5 integer (string) s1: "); s1 = in.next(); i1 = atoi(s1); // Same effect as: i1 = Integer.parseInt(s1); !!!! System.out.println(s1 + " = " + i1 + " (dec)\n"); System.out.print("Enter an base 5 integer (string) s2: "); s2 = in.next(); i2 = atoi(s2); // Same effect as: i2 = Integer.parseInt(s2); System.out.println(s2 + " = " + i2 + " (dec)\n"); System.out.println("sum (in base 5) = " + itoa(i1+i2) ); System.out.println("product (in base 5) = " + itoa(i1*i2) ); } }