Party Invitation - Trimming the Invitation List
for loop

You're right.  Not much point in checking the boundary condition twice.  


        // right now, it is doing 1 more calculation than necessary
        // before exiting the for loop
        int indexToRemove = 0;

        for (int i = 0; indexToRemove &lt; friendList.size(); i++) {
            // what I'm trying to say is that if the index you're
            // cutting is longer than the friendList, then exit the for
            // loop
            // but the indexToRemove here is from the last iteration, so
            // it doesn't work
            indexToRemove = ((roundNumber[h] - 1) + (i * (roundNumber[h] - 1)));
            System.out.println("Removing index: " + indexToRemove);
            if (indexToRemove &lt; friendList.size()) {
                friendList.remove(indexToRemove);
            }
            System.out.println(friendList);

        }



You need to update indexToRemove at the end of the loop, not the beginning.  

        int indexToRemove = roundNumber[h] - 1;

        for (int i = 1; indexToRemove &lt; friendList.size(); i++) {
            System.out.println("Removing index: " + indexToRemove);
            friendList.remove(indexToRemove);
            System.out.println(friendList);
            indexToRemove = ((roundNumber[h] - 1) + (i * (roundNumber[h] - 1)));
        }


Perhaps this would be clearer as a while loop:  

        int indexToRemove = roundNumber[h] - 1;
        int i = 1;

        while ( indexToRemove &lt; friendList.size() ) {
            System.out.println("Removing index: " + indexToRemove);
            friendList.remove(indexToRemove);
            System.out.println(friendList);

            indexToRemove = ((roundNumber[h] - 1) + (i * (roundNumber[h] - 1)));
            i++;
        }


Remember that you can always write a for loop as a while loop.  It's just syntactic sugar.  Or vice versa:  

        for (int indexToRemove = roundNumber[h] - 1, i = 1; indexToRemove &lt; friendList.size(); i++, indexToRemove = ((roundNumber[h] - 1) + (i * (roundNumber[h] - 1))) ) {
            System.out.println("Removing index: " + indexToRemove);
            friendList.remove(indexToRemove);
            System.out.println(friendList);
        }


Although that's a bit long and complicated for a single line.  Note that we can rewrite the first line as 

        for (int indexToRemove = roundNumber[h] - 1, i = 1; indexToRemove &lt; friendList.size(); i++, indexToRemove = (i + 1) * (roundNumber[h] - 1) ) {


That's a bit better, but we can still do better:  

        for (int indexToRemove = roundNumber[h] - 1; indexToRemove &lt; friendList.size(); indexToRemove += roundNumber[h] - 1 ) {


That seems more like a for loop.  We've done away with i altogether and only work with indexToRemove.