Java Notes

Examples - Method and loop review

The examples in this program are intended for reviewing methods and loops.

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
 92 
 93 
 94 
 95 
 96 
 97 
 98 
 99 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
// SampleMethods.java -- Shows loop examples inside methods.
// Author:  Fred Swartz - 2005 Dec 11

import javax.swing.*;
import java.util.*;

public class SampleMethods {
    
    //======================================================= primeFactor
    // Returns a factor of n, or 0 if n is prime.
    // Uses simple algorithm of dividing by all numbers up to n.
    // Could improve efficiency many ways.
    public static int primeFactor(int n) {
        for (int divisor = 2; divisor < n; divisor++) {
            if ((n % divisor) == 0) {
                return divisor;  // Divisible implies not prime!
            }
        }
        return 0;  // Must be prime if nothing was able to divide it.
    }
    
    //======================================================= countVowels
    // Or could use substring, ||, switch, nested for loops, ...
    public static int countVowels(String text) {
        int vowelCount = 0;
        for (int pos = 0; pos < text.length(); pos++) {
            if ("aeiouAEIOU".indexOf(text.charAt(pos)) >= 0) {
                vowelCount++;
            }
        }
        return vowelCount;
    }
    
    //========================================================= summation
    // Returns sum off all numbers from 1 to n.
    // Uses loop instead of just returning (n * (n+1)) / 2
    public static int summation(int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        return sum;
    }
    
    //========================================================== reverse
    // Reverse string.  Should use StringBuilder for efficiency.
    public static String reverse(String s) {
        String rev = "";
        for (int pos = 0; pos < s.length(); pos++) {
            rev = s.substring(pos, pos+1) + rev;
        }
        return rev;
    }
    
    //================================================= readAndAddDialog
    public static int readAndAddDialog() {
        int sum = 0;
        while (true) {  // Loop until Cancel or close box clicked.
            String input = JOptionPane.showInputDialog(null, "Input");
            if (input == null) {
                break;  //***************************** EXIT LOOP
            }
            int num = Integer.parseInt(input);
            sum += num;
        }
        return sum;
    }
    
    //================================================= readAndAddScanner
    public static int readAndAddScanner() {
        Scanner in = new Scanner(System.in);
        int sum = 0;
        System.out.println("Enter numbers to sum.  Non-number terminates.");
        while (in.hasNextInt()) {  // Loop until no integer
            int num = in.nextInt();
            sum += num;
        }
        return sum;
    }
    
    //=============================================================== main
    public static void main(String[] args) {
        assert primeFactor(2) == 0 : "primeFactor(2)";
        assert primeFactor(4) != 0 : " primeFactor(4)";
        assert primeFactor(112) != 0 : "primeFactor(112)";
        assert primeFactor(113) == 0 : "primeFactor(113)";
        
        assert countVowels("") == 0 : "countVowels(\"\")";
        assert countVowels("a") == 1 : "countVowels(\"a\")";
        assert countVowels("e") == 1 : "countVowels(\"e\")";
        assert countVowels("i") == 1 : "countVowels(\"i\")";
        assert countVowels("o") == 1 : "countVowels(\"o\")";
        assert countVowels("u") == 1 : "countVowels(\"u\")";
        assert countVowels("A") == 1 : "countVowels(\"A\")";
        assert countVowels("E") == 1 : "countVowels(\"E\")";
        assert countVowels("I") == 1 : "countVowels(\"I\")";
        assert countVowels("O") == 1 : "countVowels(\"O\")";
        assert countVowels("U") == 1 : "countVowels(\"U\")";
        assert countVowels("x") == 0 : "countVowels(\"x\")";
        assert countVowels("x") == 0 : "countVowels(\"x\")";
        assert countVowels("nw s th tm fr...") == 0 : "countVowels(\"nw s th tm fr..\")";
        assert countVowels("now is the time for...") == 6 : "countVowels(\"now is the time for...\")";
        
        assert summation(1) == 1  : "summation(1)";
        assert summation(2) == 3  : "summation(2)";
        assert summation(3) == 6  : "summation(3)";
        assert summation(4) == 10 : "summation(4)";
        
        assert reverse("").equals("") : "reverse(\"\")";
        assert reverse("a").equals("a") : "reverse(\"a\")";
        assert reverse("ab").equals("ba") : "reverse(\"ab\")";
        assert reverse("abc").equals("cba") : "reverse(\"abc\")";
        
        int r1 = readAndAddDialog();
        JOptionPane.showMessageDialog(null, "Sum is " + r1);
        
        int r2 = readAndAddScanner();
        System.out.println("Sum is " + r2);
    }
}