Except where otherwise noted, the contents of this document are Copyright 2012 Stuart Reges and Marty Stepp.
lab document created by Marty Stepp, Stuart Reges, Whitaker Brand and Hélène Martin
Goals for today:
Recall that you can use a variable to store the results of an expression in memory and use them later in the program.
type name; // declare name = value or expression; // assign a value ... type name = value or expression; // declare-and-initialize together
Examples:
double iphonePrice; iPhonePrice = 499.95; int siblings = 3; System.out.println("I have " + siblings + " brothers/sisters.");
Which of the following choices is the correct syntax for declaring a real
number variable named grade
and initializing its value
to 4.0
?
Suppose you have a variable named grade
, set
to 1.6
:
double grade = 1.6; // uh-oh
Suppose later in the program's code, we want to change the value
of grade
to 4.0
. Which is the correct syntax to
do this?
a
,
b
, and c
What are the values of a
, b
, and c
after the following statements? Write your answers in the boxes on the
right.
int a = 5; int b = 10; int c = b; a = a + 1; // a? 6 b = b - 1; // b? 9 c = c + a; // c? 16
for
loops
A for
loop repeats a group of statements a given number of times.
for (initialization; test; update) { statement(s) to repeat; }
Example:
for (int i = 1; i <= 10; i++) { System.out.println("We're number one!"); }
for
loop
public class Count2 { public static void main(String[] args) { for ( fill me in! ) { System.out.println( fill me in! ); } } }
2 times 1 = 2 2 times 2 = 4 2 times 3 = 6 2 times 4 = 8
Our Practice-It! system lets you solve Java problems online.
What output is produced by the following Java program? Write the output in the box on the right side.
public class OddStuff { public static void main(String[] args) { int number = 32; for (int count = 1; count <= number; count++) { System.out.println(number); number = number / 2; } } } |
Output: 32 16 8 4 |
1 2 3 4 5 6 7 8 9 10 |
public class Numbers { public static void main(String[] args) { int number = 42; for (int i = 1; i <= 1000; i++) { number = number * 37 % 103; } int number2 = number * number; System.out.println("result = " + number2); } } |
for
loop (line 5). Do this by moving your cursor to the beginning of that line until you see a
stop-sign icon
continued on the next slide...
i
and number
.
number
has when i
has the given value.
Keep in mind that you are figuring out what value number
has just before it executes this line of code.
i = 1, number = |
42 |
|
i = 2, number = |
9 |
|
i = 3, number = |
24 |
|
i = 4, number = |
64 |
continued on the next slide...
number
after the loop is done executing.
number
?
69
for
loop:
8 11 14 17 20 23
******** *********** ************** ***************** ******************** ***********************
Write a program to produce the following output using nested for
loops. Use a table to help you figure out the patterns of characters on each line.
-----1----- ----333---- ---55555--- --7777777-- -999999999- |
|
|
Test your loop expressions in Practice-It! using the checkmark icon above. Use your expressions in the loop tests of the inner loops of your code.
neighborDesign
that produces the ASCII drawing specified by your neighbor.
Write a Java program in a class named SlashFigure
to produce the following output with nested for
loops. Use a loop table if necessary to figure out the expressions.
!!!!!!!!!!!!!!!!!!!!!! \\!!!!!!!!!!!!!!!!!!// \\\\!!!!!!!!!!!!!!//// \\\\\\!!!!!!!!!!////// \\\\\\\\!!!!!!//////// \\\\\\\\\\!!////////// |
|
Test your code in Practice-It! or the Output Comparison Tool.
A class constant is a global value that cannot be changed.
public static final type name = expression;
Example:
public static final int DAYS_PER_WEEK = 7; public static final double TAX_RATE = 0.10;
for
loop expressions w/ constant
When adding a class constant to a loop expression, it affects the constant that must be added in the expression.
Suppose we have the two loop expressions below for figure sizes of 5 and 9. The third line of the table shows the general formula that would be used if we turned our figure's size into a constant named SIZE
.
size | expression | relationship |
---|---|---|
5 |
8 * line + 16 |
16 = 3 * 5 + 1 |
9 |
8 * line + 28 |
28 = 3 * 9 + 1 |
SIZE |
8 * line + (3 * SIZE + 1) |
continued on the next slide ...
for
loop table w/ constant
You already found loop expressions for the slash figure at size 6. Now make a table at size 4 and use the two to generalize the loop expression in terms of a constant for the figure size.
!!!!!!!!!!!!!! \\!!!!!!!!!!// \\\\!!!!!!//// \\\\\\!!////// |
|
|
Add a class constant to your slash figure program so that it can be resized from its default of 6:
size 4 | size 7 |
---|---|
!!!!!!!!!!!!!! \\!!!!!!!!!!// \\\\!!!!!!//// \\\\\\!!////// |
!!!!!!!!!!!!!!!!!!!!!!!!!! \\!!!!!!!!!!!!!!!!!!!!!!// \\\\!!!!!!!!!!!!!!!!!!//// \\\\\\!!!!!!!!!!!!!!////// \\\\\\\\!!!!!!!!!!//////// \\\\\\\\\\!!!!!!////////// \\\\\\\\\\\\!!//////////// |
Test your code in the Output Comparison Tool.
A parameter allows you to pass in a value to a method as you call it.
public static void name(type name) { // declare
methodName(expression); // call
Example:
public static void squared(int num) { System.out.println(num + " times " + num + " is " + (num * num)); } ... squared(3); // 3 times 3 is 9 squared(8); // 8 times 8 is 64
public class MysteryNums { public static void main(String[] args) { int x = 15; sentence(x, 42); // 15 42 int y = x - 5; sentence(y, x + y); // 10 25 } public static void sentence(int num1, int num2) { System.out.println(num1 + " " + num2); } }
public class MysterySoda { public static void main(String[] args) { String soda = "coke"; String pop = "pepsi"; String pepsi = "soda"; // #1 = "coke", #2 = "pepsi", #3 = "soda" carbonated(soda, pop, pepsi); } // #1 #2 #3 public static void carbonated(String coke, String soda, String pop) { // #2 #3 #1 System.out.println("say " + soda + " not " + pop + " or " + coke); } }
// say#2pepsi not#3soda or#1coke
public class MysterySoda { public static void main(String[] args) { String soda = "coke"; String pop = "pepsi"; String coke = "pop"; String pepsi = "soda"; String say = pop; carbonated(soda, pop, pepsi); // say pepsi not soda or coke carbonated(coke, soda, pop); // say coke not pepsi or pop carbonated(pop, pepsi, pepsi); // say soda not soda or pepsi carbonated("pop", pop, "koolaid"); // say pepsi not koolaid or pop carbonated(say, "say", pop); // say say not pepsi or pepsi } public static void carbonated(String coke, String soda, String pop) { System.out.println("say " + soda + " not " + pop + " or " + coke); } }
public class MysteryNumbers { public static void main(String[] args) { String one = "two"; String two = "three"; String three = "1"; int number = 20; sentence(one, two, 3); // three times two = 6 sentence(two, three, 14); // 1 times three = 28 sentence(three, three, number + 1); // 1 times 1 = 42 sentence(three, two, 1); // three times 1 = 2 sentence("eight", three, number / 2); // 1 times eight = 20 } public static void sentence(String three, String one, int number) { System.out.println(one + " times " + three + " = " + (number * 2)); } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class Parameters { public static void main() { double bubble = 867.5309; double x = 10.01; printer(double x, double y); printer(x); printer("barack", "obama"); System.out.println("z = " + z); } public static void printer(x, y double) { int z = 5; System.out.println("x = " + double x + " and y = " + y); System.out.println("The value from main is: " + bubble); } } |
y
without declaring and
initializing ity
in the method
callprinter
without the correct number of
parameters (2, in this case)printer
by passing the correct type of
parameters (double, in this case)z
: it is in scope
inside printer
, not main
x
main
that were not
passed into printer
as a parameterpublic class Parameters { public static void main() { double bubble = 867.5309; double x = 10.01; double y = 5.3; printer(doublex,doubley); printer(x, 0.0);printer("barack", "obama");int z = 5; System.out.println("z = " + z); } public static void printer(double x, double y) { System.out.println("x = " + x + " and y = " + y);System.out.println("The value from main is: " + bubble);int z = 5; } }
printNumbers
printNumbers
that accepts a maximum number as a parameter and prints each number from 1 up to that maximum, inclusive, boxed by square brackets. For example, the following calls:
printNumbers(15); printNumbers(5);should produce the following output:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [1] [2] [3] [4] [5]
printSquare
printSquare
that accepts min and max integers and prints a square of lines of increasing numbers. The first line should start with the minimum; each line that follows should start with the next-higher number. The numbers on a line wrap back to the minimum after it hits the maximum. For example, the call:
printSquare(3, 6);should produce the following output:
3456 4563 5634 6345
If you finish all the exercises, try out our Practice-It 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 book and try to solve them!