CS 145 Lecture 8 – Methods Cont’d
Dear students,
Last time we started generating some circle art, but we stopped with only one circle. Once we get that working, let’s add a second random circle. And a third. And a fourth. And so on. We’ll find that the code quickly gets away from us if we simply copy and paste. Instead, we factor out the repeated code to a method.
For the time being, our programs with multiple methods will have this structure:
public class ClassWithMultipleMethods { public static void main(String[] args) { // ... helperMethodA(); // ... helperMethodB(); // ... } public static void helperMethodA() { // ... } public static void helperMethodB() { // ... } }
Let’s make a method that generates a random circle and call it a bunch of times!
Next we’ll write a method that generates a random letter, perhaps used to assign someone to a group. We’ll visualize what happens in memory when we execute methods. This will lead us to the notion of a variable’s scope, which is the region of code in which a variable may be accessed. Reaching across scopes is impossible, but methods provide a vehicle for circumventing the Wall of Braces: return values and parameters.
Here’s your TODO list to complete before next class:
- An unofficial homework 1 grade report has been sent to you. Fix your homework 1 issues and resubmit before Monday. 50% of your issues are solved by noticing details like spaces and punctuation. 95% of your issues have been discussed numerous times on Piazza.
- To receive credit for homework 1, you must attend a feedback/review session during the next lab.
- The next lab is posted.
See you next class!
![](http://www.twodee.org/images/signature_first.png)
P.S. It’s Haiku Friday!
“Don’t repeat yourself”
Grandpa loved to tell me that
Mostly at the end
P.P.S. Here’s the code we wrote together in class…
Circles.java
package lecture0923; import java.util.Random; public class Circles { public static void main(String[] args) { System.out.println("<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\">"); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); generateCircle(); System.out.println("</svg>"); } public static void generateCircle() { Random generator = new Random(); int originX = generator.nextInt(800); int originY = generator.nextInt(600); int radius = generator.nextInt(100); int r = generator.nextInt(256); int g = generator.nextInt(256); int b = generator.nextInt(256); System.out.printf("<circle cx=\"%d\" cy=\"%d\" r=\"%d\" stroke=\"black\" stroke-width=\"2\" fill=\"rgb(%d, %d, %d)\"/>%n", originX, originY, radius, r, g, b); } }
Grouper.java
package lecture0923; import java.util.Random; public class Grouper { public static void main(String[] args) { System.out.println("Person 1 is in group..." + getRandomLetter()); System.out.print("Person 2 is in group..."); char c = getRandomLetter(); System.out.println(c); System.out.print("Person 3 is in group..."); System.out.println(getRandomLetter()); } // public static void printRandomLetter() { // Random generator = new Random(); // int n = generator.nextInt(26); // a number in [0, 25] // char randomLetter = (char) (n + 'A'); // System.out.println(randomLetter); // } public static char getRandomLetter() { Random generator = new Random(); int n = generator.nextInt(26); // a number in [0, 25] char randomLetter = (char) (n + 'A'); return randomLetter; //System.out.println(randomLetter); } }
RandomUtilities.java
package lecture0923; import java.util.Random; public class RandomUtilities { public static int getRandomInRange(int lo, int hi) { Random generator = new Random(); int span = hi - lo + 1; int randomNumber = generator.nextInt(span) + lo; return randomNumber; } public static void main(String[] args) { System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); System.out.println(getRandomInRange(9, 10)); } }