Operating on a Series of Integers

Problem

You need to work on a range of integers.

Solution

For a contiguous set, use a for loop.

Discussion

To process a contiguous set of integers, Java provides a for loop. Loop control for the for loop is in three parts: initialize, test, and change. If the test part is initially false, the loop will never be executed, not even once.

For discontinuous ranges of numbers, use a java.util.BitSet .

The following program demonstrates all of these techniques:

import java.util.BitSet;

/** Operations on series of numbers */
public class NumSeries {
    public static void main(String[] args) {

        // When you want an ordinal list of numbers, use a for loop
        // starting at 1.
        for (int i = 1; i <= 12; i++)
            System.out.println("Month # " + i);
    
        // When you want a set of array indexes, use a for loop
        // starting at 0.
        for (int i = 0; i < 12; i++)
            System.out.println("Month " + months[i]);

        // For a discontiguous set of integers, try a BitSet

        // Create a BitSet and turn on a couple of bits.
        BitSet b = new BitSet(  );
        b.set(0);    // January
        b.set(3);    // April

        // Presumably this would be somewhere else in the code.
        for (int i = 0; i<12; i++) {
            if (b.get(i))
                System.out.println("Month " + months[i] + " requested");
        }
    }
    /** The names of the months. See Dates/Times chapter for a better way */
    protected static String months[] = {
        "January", "February", "March", "April",
        "May", "June", "July", "August",
        "September", "October", "November", "December"
    };
}

Get Java Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.