Extracting numbers from a string into an ArrayList This first stores a string as input, loops through it to extract all of the numbers into an ArrayList, then prints all of these numbers along with their sum and product.

How would I decompose this Java program into multiple methods? 

public class Assignment1 {
    public static void main(String[] args){

        // Creates scanner for storing input string
        Scanner numScanner = new Scanner(System.in);
        String input;
        System.out.println("Enter a string of numbers to compute their sum and product:");
        System.out.println("(Enter '.' to terminate program)");
        input = numScanner.nextLine();

        // Terminates the program if there is no input
        if (input.length() == 0){
            System.out.println("Invalid input: Not enough characters");
            System.exit(-1);
        }

        // Terminates the program if the first character is '.'
        if (input.charAt(0) == '.'){
            System.out.println("Thank you for using numberScanner!");
            System.exit(-1);
        }


        // Defines all of the variables used in the loops
        int index = 0;
        int sum = 0;
        int product = 1; 
        Integer start = null;
        int end = 0;
        ArrayList&lt;Integer&gt; numbers = new ArrayList&lt;&gt;();

        // Loop that extracts all numbers from the string and computes their sum and product
        while (index &lt; input.length()){
            if (input.charAt(index) &gt;= 'A' &amp;&amp; input.charAt(index) &lt;= 'Z' &amp;&amp; start == null){
                index++;
            }else if (input.charAt(index) &gt;= '1' &amp;&amp; input.charAt(index) &lt;= '9' &amp;&amp; start == null){
                start = index;
                index++;
            }else if (Character.isDigit(input.charAt(index))){
                index++;
            }else{
                end = index;
                numbers.add(Integer.parseInt(input.substring(start,end)));
                sum += Integer.parseInt(input.substring(start,end));
                product *= Integer.parseInt(input.substring(start,end));
                index++;
                start = null;
            }   
        }

        // For the last number, the end is greater than the length of the string
        // This prints the last number without using the end
        if (index == input.length()){
            numbers.add(Integer.parseInt(input.substring(start)));
            sum += Integer.parseInt(input.substring(start));
            product *= Integer.parseInt(input.substring(start));
            index++;
        }

        // Prints the Numbers, Sum and Product beside each other
        System.out.print("Numbers: ");
        for (Object a : numbers) {
            System.out.print(a.toString() + " ");
            }
        System.out.println("Sum: " + sum + " Product: " + product);
    }
}
Start by separating your code into input handling, computation, and output.  Each of those could have its own method(s).

For the input, you're working too hard.  The java.util.Scanner has methods to give you ints.

Think about what the inputs and outputs of each function should be.  For example, your input handling function should take an InputStream and return a List of Integers or an array of ints.