Using an accumulator
A common pattern in a loop is to initialize a variable outside the loop, and update it during each iteration (or some of the iterations). Here is an example you may have seen before, a static method that counts the number of times the character 'p' occurs in a string:public static int countPs(String s) { int total = 0; for (int i = 0; i < s.length(); i += 1) { // if the character is a 'p', add 1 to the total char c = s.charAt(i); if (c == 'p') { total += 1; } } return total; }Here is a less obvious example. How would you create the reverse of a string? The idea is to build the result string one character at a time, in a loop. In pseudocode we want something like:
start with an empty result string for each character c in the string, starting from the end append c to the end of the result string
public static String reverse(String s) { String result = ""; // start with empty string for (int i = s.length() - 1; i >= 0; i = i - 1) { result += s.charAt(i); // add on characters one at a time } return result; }Note that this is another example of the accumulator pattern, where the "accumulator" variable is a string and the operation is concatenation.