Except where otherwise noted, the contents of this document are Copyright 2010 Stuart Reges and Marty Stepp.
lab document created by Whitaker Brand and Marty Stepp
Goals for today:
Random
objects to produce random numbers
boolean
expressions and variables to represent logical true/false expressions
Random
Methods
To use these methods, you need a variable of type Random
in scope:
Random randy = new Random();
int aRandomNumber = randy.nextInt(10); // 09
Method name  Returns... 

nextInt()

a random integer 
nextInt(max)

a random integer between 0 (inclusive) and max (exclusive) 
nextDouble()

a random real number between 0.0 and 1.0 
nextBoolean()

a random boolean value: true or false

Random rand = new Random();
Example: a random integer from 1 to 5 inclusive: 
rand.nextInt(5)
+
1

a random integer from 0 to 3 inclusive: 
rand.nextInt(4)

a random integer from 5 to 10 inclusive: 
rand.nextInt(6)
+
5

a random integer from 4 to 4 inclusive: 
rand.nextInt(9)

4

a random even integer from 16 to 28 inclusive: (Hint: To get only even numbers, scale up.) 
rand.nextInt(7)
*
2
+
16

Write the result of each expression as either true
or false
, given the following variables. Recall the logical operators: &&
(and), 
(or), !
(not).
int x = 12; int y = 7; int z = 28; String s = "mid term";
x < 14 
true 

!(x % 2 < 1) 
false 

x < y  x < z 
true 

z / x < x / y * x 
true 

s.length() == y 
false 

s.toUpperCase().equals("MID TERM") 
true 

!s.equals("mid term")  x * y != z 
true 

s.substring(z / x).length() > y 
false 
This attempted solution to SelfCheck 5.15 (isVowel
) has several problems:
// Returns whether the given string represents a vowel: // a, e, i, o, or u, case insensitively. public static boolean isVowel(String s) { if (s == "a") { return true; } else if (s == "e") { return true; } else if (s == "i") { return true; } else if (s == "o") { return true; } else if (s == "u") { return true; } else { return false; } }
Open PracticeIt from the link above, copy/paste this code into it, then see the next slide.
Fix the following aspects of the code:
public static boolean isVowel(String s) { s = s.toLowerCase(); if (s.equals("a")  s.equals("e")  s.equals("i")  s.equals("o")  s.equals("u")) { return true; } else { return false; } }
The above can be improved. "Boolean Zen" version:
public static boolean isVowel(String s) { s = s.toLowerCase(); return s.equals("a")  s.equals("e")  s.equals("i")  s.equals("o")  s.equals("u"); }
Write a method named makeGuesses
that will output random numbers between 1 and 50 inclusive until it outputs one of at least 48. Output each guess and the total number of guesses made. Below is a sample execution:
guess = 43 guess = 47 guess = 45 guess = 27 guess = 49 total guesses = 5
Try solving this problem in PracticeIt! from the link above.
Identify whether each assertion is always/never/sometimes true
at each point.
x > y 
z == 0 
x == y 


A  SOMETIMES  ALWAYS  SOMETIMES 
B  SOMETIMES  SOMETIMES  NEVER 
C  ALWAYS  NEVER  NEVER 
D  NEVER  NEVER  NEVER 
E  NEVER  SOMETIMES  ALWAYS 
public static void mystery(int x, int y) { int z = 0; // Point A while (x != y) { // Point B z++; if (x > y) { // Point C x = x / 10; } else { // Point D y = y / 10; } } // Point E System.out.println(x + " " + y + " " + z); }
Write a method named allDigitsOdd
that returns whether every digit of a positive integer is odd. Your method should return true
if the number consists entirely of odd digits and false
if any of its digits are even. 0, 2, 4, 6, and 8 are even digits, and 1, 3, 5, 7, 9 are odd digits.
For example, allDigitsOdd(135319)
returns true
but allDigitsOdd(9145293)
returns false
.
Hint: You can pull apart a number into its digits using / 10
and % 10
.
Write a method named hopscotch
that accepts an integer parameter for a number of "hops" and prints a hopscotch board of that many hops.
For example, the call hopscotch(3);
would produce the following output:
1 2 3 4 5 6 7 8 9 10
Try solving this problem in PracticeIt: click on the checkmark above!
Write a method hasMidpoint
that accepts three integers as parameters, and returns true
if one of the numbers is the midpoint of the other two and returns false
otherwise.
For example, the call hasMidpoint(3, 7, 5)
would return true
because one of the parameters (5) is the midpoint of the other two (3 and 7).
Try to solve this problem in PracticeIt: click on the checkmark above!
Write a method named longestName
that reads names typed by the user and prints the longest name (the name that contains the most characters) in the format shown below. Your method should accept a console Scanner
and an integer n as parameters and should then prompt for n names.
A sample execution of the call longestName(console, 4)
might look like the following:
name #1? roy name #2? DANE name #3? sTeFaNiE name #4? Erik Stefanie's name is longest
Try to solve this problem in PracticeIt: click on the checkmark above!
If you finish all the exercises, try out our PracticeIt web tool. It lets you solve Java problems from our Building Java Programs textbook.
You can view an exercise, type a solution, and submit it to see if you have solved it correctly.
Choose some problems from the Sample Midterm Exams and try to solve them!