import java.io.Console; import java.util.ArrayList; public class MaxProduct { public static void main(String[] args) { ArrayList entered = new ArrayList(); Console user = System.console(); while(true) { user.printf("Number %d [enter empty line at end]: ", entered.size() + 1); String line = user.readLine(); if(line.equals("")) { if(entered.size() == 0) { user.printf("Cannot compute for empty array.\n"); } else { int[] data = new int[entered.size()]; user.printf("Array:"); for(int i = 0; i < data.length; i++) { data[i] = entered.get(i).intValue(); user.printf(" %d", data[i]); if(i < data.length - 1) user.printf(","); } user.printf("\n"); user.printf("Slow: %d\n", slowMaxProduct(data)); user.printf("Fast: %d\n", fastMaxProduct(data)); } entered = new ArrayList(); } else { try { entered.add(Integer.decode(line)); } catch(NumberFormatException e) { user.printf("Not a valid integer.\n"); } } } } private static int slowMaxProduct(int[] nums) { int n = nums.length; int max = nums[0]; for(int i = 1; i != n; i++) { int p = nums[i]; int sub = p; for(int j = i - 1; j != -1; j--) { p *= nums[j]; if(p > sub) sub = p; } if(sub > max) max = sub; } return max; } private static int fastMaxProduct(int[] nums) { return 0; } }