Checking digits in a number
Really, the entire thing feels redundant


Well, it all comes down to the choice of programming language. With Java you chose predictability and regularity not power nor shortness. But I can still suggest improvements over this.



Your code does 3 things:


Take an integer input
Count evens, odds and zeros in its digits

2.1 Requires taking the digits of a number
Output this result nicely 

3.1 Requires pluralization handling


So you should write three big methods and two smaller helper ones. This will not reduce size but will really increase readibility.



I started the re-factoring by extracting the input method, to show you what I mean in practice:

public class num
{
    public static long integerInput(String prompt) {
        long number;
        boolean validInput = false;
        Scanner input = new Scanner(System.in);

        do
        {
            System.out.print("Please enter an integer:  ");
            String numStr = input.next();

            try {
                number = Long.parseLong(numStr);
                validInput = true;
            } catch (NumberFormatException e) {
                System.out.print("That's not an integer. ");
                number = 0;
            }
        } while (!validInput);
        return number;

    }

    public static void main( String[] args )
    {

        long number = integerInput("The number? ");
        // Break each digit up by dividing by powers of 10.
        int evens = 0, odds = 0, zeros = 0;
        for (long temp = number; temp &gt; 0; temp /= 10)
        {
            int digit = (int)(temp % 10);

            if (digit == 0)
            {
                zeros++;
                System.out.println(digit + " is a zero digit.");
            }
            else if (digit % 2 == 0)
            {
                evens++;
                System.out.println(digit + " is an even digit.");
            }
            else
            {
                odds++;
                System.out.println(digit + " is an odd digit.");
            }
        }

        String evenStr = " even " + ((evens == 1) ? "digit" : "digits");
        String oddStr = " odd " + ((odds == 1) ? "digit" : "digits");
        String zeroStr = (zeros == 1) ? " zero" : " zeros";

        System.out.println(number + " has " + evens + evenStr + ", " + odds + oddStr + ", and "
                + zeros + zeroStr + ".");
    }

}


The remaining 2 / 3 are up to you, good luck :)