Java Basics - OCPS TeacherPress
Download
Report
Transcript Java Basics - OCPS TeacherPress
Java Basics
(continued)
Ms. Pack
AP Computer Science A
Basic Java
Syntax and Semantics
Methods, Messages, and Signatures
Classes implement methods, and objects are
instances of classes.
Objects that share common behavior are grouped
into classes.
An object responds to a message only if its class
implements a corresponding method.
Messages are sometimes accompanied by parameters
and sometimes not:
pen.move();
// No parameter expected
pen.moveDown(8); // One parameter expected
Java Concepts 2.3 (Objects, Classes, and Methods), 2.4 (Method Parameters and return values)
Basic Java
Syntax and Semantics
Some methods return a value and others do
not.
To use a method successfully we must
know:
What type of value it returns
It’s name (identifier)
The number and type of the parameters it
expects
This information is called the method’s
signature.
Java Concepts 2.3 (Objects, Classes, and Methods), 2.4 (Method Parameters and return values)
Basic Java
Syntax and Semantics
Programming Protocols: Use camelCase
When forming a compound variable name,
programmers usually capitalize the first letter of
each word except the first.
(For example: taxableIncome)
All the words in a class’s name typically begin with
a capital letter (EmployeePayroll).
Constant names usually are uppercase and words
are separated with underlines
(INCOME_TAX_RATE).
Java Concepts 2.1 (Types and Variables)
Comments
Comments are explanatory sentences
inserted in a program in such a matter that
the compiler ignores them.
There are two styles for indicating comments:
Single line comments:
These include all of the text following a double
slash (//) on any given line; in other words, this
style is best for just one line of comments
Multiline comments:
These include all of the text between an opening
/* and a closing */
Java Concepts 1.6 (Compiling a Simple Program)
Additional Operators
Extended Assignment Operators
The assignment operator = can be combined with the
arithmetic and concatenation operators to provide
extended assignment operators. For example:
int a = 9;
String s = "hi";
a += 3;
//
a -= 3;
//
a *= 3;
//
a /= 3;
//
a %= 3;
//
s += " there"; //
Equivalent
Equivalent
Equivalent
Equivalent
Equivalent
Equivalent
to
to
to
to
to
to
a = a + 3;
a = a – 3;
a = a * 3;
a = a / 3;
a = a % 3;
s=s + " there";
Java Concepts 4.3 (Assignment, Increment, and Decrement)
Additional Operators
Increment and Decrement
Java includes increment (++) and decrement (--)
operators that increase or decrease a variables
value by one:
int m = 7;
double x = 6.4;
m++;
// Equivalent to m = m + 1;
x--;
// Equivalent to x = x – 1.0;
The precedence of the increment and decrement
operators is the same as unary plus, unary
minus, and cast.
Java Concepts 4.3 (Assignment, Increment, and Decrement)
Standard
Classes and Methods
Eight methods in the Math Class:
static double random()
Returns a double in the range [0.0, 1.0)
Java Concepts 4.4 (Arithmetic Operations and Mathematical Functions)
Standard
Classes and Methods
Using the Math class
double absNum, powerNum, randomNum, sqrtNum;
absNum = Math.abs(-30);
powerNum = Math.pow(-3, 3);
randomNum = Math.random();
sqrtNum = Math.sqrt(25.0);
Results:
absNum has a value of 30.0
//Absolute value of -30
powerNum has a value of -27.0 //-3 to the 3rd power
randomNum has a value of ???
//Random number between
//0 (inclusive) and 1 (exclusive)
sqrtNum has a value of 5.0
//Square root of 25.0
Java Concepts 4.4 (Arithmetic Operations and Mathematical Functions)
Standard
Classes and Methods
Random Numbers and Simulation
The Random class of the Java library implements a random
number generator.
To generate random numbers, you construct an object of the
Random class and then apply one of the following methods:
nextInt(n) – returns a random integer between 0 (inclusive)
and n (exclusive) [0, n)
nextDouble() – returns a random floating point number
between 0 (inclusive) and 1 (exclusive) [0, 1)
For example, if a contestant on “Deal or No Deal” randomly
selects their briefcase from the 26 initial briefcases:
import java.util.Random;
//Include this at top of program
Random generator = new Random();
int briefcaseNum = generator.nextInt(26) + 1;
Java Concepts 6.5 (Random Numbers and Simulation)
Control Statements
While and if-else are called control
statements.
while (some condition)
{
do stuff;
}
if (some condition)
{
do stuff 1;
}
else
{
do stuff 2;
}
Do stuff repeatedly as long
as the condition holds true
If some condition is true, do
stuff 1, and if it is false, do stuff
2.
Java Concepts 5.1 (The if Statement), 6.1 (while Loops)
The if and
if-else Statements
Principal Forms
In Java, the if and if-else statements allow for the
conditional execution of statements.
if (condition)
{
statement1;
statement2;
}
if (condition)
{ statement1;
statement2;
}
else
{ statement3;
statement4;
}
Java Concepts 5.1 (The if Statement)
The if and
if-else Statements
Relational Operators
The complete list of relational operators available for use in Java:
Java Concepts 5.2 (Comparing values)
The if and
if-else Statements
Relational Operators
Which of the following if statements are incorrect?
int x;
1.
2.
3.
4.
5.
6.
7.
if
if
if
if
if
if
if
(
(
(
(
(
(
(
x > 10 )
x = 10 ) Incorrect
x >< 10 ) Incorrect
x == 10 )
x >= 10 )
x != 10 )
!x = 10 ) Incorrect
Java Concepts 5.2 (Comparing values)
The while Statement
The while statement provides a looping mechanism that executes
statements repeatedly for as long as some condition remains
true.
while (condition)
statement;
// loop test
// one statement inside the loop body
while (condition)
{
statement;
statement;
...
}
// loop test
// many statements
// inside the
// loop body
Java Concepts 6.1 (while Loops)
The while Statement
Common Structure
Loops typically adhere to the following structure:
1) initialize variables
2) while (condition)
// perform test
{
3)
Loop body - perform calculations or do something
4)
Loop body - change variables involved in the condition
}
In order for the loop to terminate, each iteration
through the loop must move variables involved in
the condition closer to satisfying the condition.
Java Concepts 6.1 (while Loops)
The while Statement
1. Write a while loop that will sum the
numbers from 1 to 100
(i.e. 1+2+3+… +100).
2. Print the answer to the console.
Java Concepts 6.1 (while Loops)
The while Statement
int sum = 0;
int count = 1;
while (count <= 100)
{
sum += count;
count++;
}
System.out.println(sum);
Java Concepts 6.1 (while Loops)
DiceRoller
DiceRoller (object class) and DiceRollerViewer client class:
Write a DiceRoller class (similar to Yahtzee) to:
Allow the person to initially roll five dice.
Each die has six faces representing numbers from 1 to 6, so the program should randomly pick a number
between 1 and 6.
Print the results of each die to the console.
After the first roll, the person should input the number of dice (between 0 and 5) that they want to roll
again.
If they enter 0, then don’t roll the dice again.
Else, roll that many dice and print the results of each die to the console again.
Repeat the prompt one more time to see if the person wants to roll some of the dice again (for a maximum
of 3 rolls).
Write a DiceRollerGame client class to:
Instantiate a DiceRoller object
Run a method in DiceRoller (such as playGame() ) to play the game.
EXTRA CREDIT (5 points): Have the player continue to take a turn (3 rolls) until they want to
stop.
HINT: You may want to use:
the Scanner class to input data,
the Random class to generate a random number to simulate rolling a die,
a while loop for rolling each of the 6 dice,
an if statement for checking the input,
System.out.print for printing to the console.
Java Concepts 6.5 (Random Numbers and Simulation)
The for Statement
The for statement combines counter initialization,
condition test, and update into a single expression.
The form for the statement:
for (initialize counter; test counter; update counter)
statement;
// one statement inside the loop body
for (initialize counter;
{
statement;
statement;
. . .;
}
test counter; update counter)
// many statements
// inside the
// loop body
Java Concepts 6.2 (for Loops)
The for Statement
Declaring the Loop Control Variable in a for Loop.
The for loop allows the programmer to declare the loop
control variable inside or outside of the loop header.
The following are equivalent loops that show these two
alternatives:
int i;
//Declare control variable above loop
for (i = 1; i <= 10; i++)
{
Use this technique if
System.out.println(i);
you need to reference
}
the value of i later
for (int i = 1; i <= 10; i++) //Declare var. in loop
{
Use this technique if
System.out.println(i);
you only use variable i
}
within the loop
Java Concepts 6.2 (for Loops)
the break Statement
The break statement can be used for breaking
out of a loop early (before the loop condition is
false).
break statements can be used similarly with both
for loops and while loops (break terminates the
loop immediately).
int sum = 0;
for (int i = 1; i<=50; i++)
{
sum += (i * 2);
if (sum > 100)
break;
}
Java Concepts 6.4 Advanced Topic (break and continue Statements)
Nested Control Statements and
the break Statement
Control statements can be nested inside each other in any
combination that proves useful.
If you are nesting loops, the break statement only breaks
out of the loop the program is currently in (the inside loop).
int sum= 0;
for (int i = 1; i<=100; i++)
{
for (int j = 1; j<=100; j++)
{
sum += (i * j);
if (sum > 100)
break;
Breaks out of this loop (not the outside loop)
}
System.out.println(“The sum is “ + sum);
sum = 0;
}
Java Concepts 6.4 Advanced Topic (break and continue Statements)
Sentinel
A sentinel is a data value that is used to denote the end of a data list
or data input.
The value cannot be a valid data value
Usually 99999 or an unreachable high value or it could be a character
such as “Q” for Quit. Note: if you want the sentinel value to be “Q” then
the value being entered needs to be a string.
Example: Sum up the ages of your family members:
int ageSum = 0;
while (true)
{
System.out.println(“Enter age of family member (or 999 to quit)”);
int age = in.nextInt();
if (age == 999)
break;
ageSum += age;
}
System.out.println(“Total age of all family members is “ + ageSum);
Java Concepts 6.4 (Processing Sentinel Values)
Sentinel
Write a segment of code that will
have the user input their grades
and print the average afterwards.
The user should enter a sentinel
value when there are no more
grades to enter.
Java Concepts 6.4 (Processing Sentinel Values)
Sentinel
Write a segment of code that will have the user input their grades and
print the average afterwards. The user should enter a sentinel value
when there are no more grades to enter.
POSSIBLE OPTION:
int sum = 0, numGrades = 0, grade;
while (true)
{
System.out.print(“Enter a grade or 999 to end “);
grade = in.nextInt();
if (grade == 999)
break;
sum += grade;
What bugs do you see in this line of code?
numGrades += 1;
}
System.out.println(“Average is “ + (sum / numGrades );
• Missing parentheses
• Need to convert to a double
• Possible Divide by Zero error
Java Concepts 6.4 (Processing Sentinel Values)
CircleCalc
CircleCalc and CircleCalcViewer classes:
Write a class to:
Have the user input the diameter of a circle (floating point
number) and the program outputs the:
Radius (how do you get the radius if you know the diameter?)
Circumference
Area
Note: you should use Math.PI in these calculations
Use a sentinel controlled loop (sentinel value should be 99999) to
keep asking the user the diameter of different circles.
Test input for validity.
EXTRA CREDIT (5 points): See next page
What is the advantage of using a sentinel controlled loop?
It allows the user to stop the looping whenever they want
CircleCalc Extra Credit
(5 extra points)
CircleComponent and CircleGraphicalViewer classes:
Write classes to:
In the client class, have the user input the diameter of a circle
(floating point number) and instantiate a component object to:
Pass the diameter to a Component object
Calculate radius, circumference, and area (Note: you should use
Math.PI in these calculations)
Draw the circle in a frame and print the calculated values beside it.
The diameter of the circle (in pixels) should match what the user
entered.
Use a sentinel controlled loop (sentinel value should be 99999) to
keep asking the user the diameter of different circles.
Test input for validity.