CMPS_322_Session_2_Slides

Download Report

Transcript CMPS_322_Session_2_Slides

Introduction to Programming
Session 2
Point Park University
CMPS 322
Summer 2008 Q1
Summer 2008 Q1
Version 1.2
1
Questions
 Questions and issues for last week's topics.
 Any issues with Netbeans?
Summer 2008 Q1
Version 1.2
2
Java Data Types
 Text reference begins at Page 34.
 Java variables fall into two categories:
– Intrinsic data types.




byte, short, int, long
char
double, float
boolean
– Intrinsic types are declared in this manner:
int myvar1;
double total = 0.0;
Summer 2008 Q1
Version 1.2
3
Java Data Types
 The second category of Java variables are known as reference
variables.
 The data types of reference variables a Java classes.
 Variables to store string data are reference variables.
 When we declare them, they actually aren’t ready to use yet.
 We must initialize them by tying them to an instance of the class.
String myname; // This is an unintialized variable.
myname = new String(“Fred Flintstone”);
String yourname = new String();
Summer 2008 Q1
Version 1.2
//
An empty string.
4
Declaring Variables
 Your programs will need to be able to store data in them for
computation and processing.
 This will necessitate that you declare variables.
 Variables are storage locations in memory that you can refer to by a
name that has meaning to you for the context of the application.
 Variables are declared by selecting data type and variable name:
int myintvalue, j, k3;
double salary = 10000.0;
Note initialization
syntax.
Summer 2008 Q1
Version 1.2
5
Declaring Variables
 Variables are not initialized automatically.
 Use of a variable before initialization is illegal in Java.
 May be initialized at time of declaration, or via assignment statement.
double salary = 10000.0;
salary = 22000.0;
Summer 2008 Q1
Version 1.2
6
Java Variable Names
 Variable names or identifiers:
– Can contain letters, digits, underscores and dollar signs.
– Must start with letter, underscore or dollar sign. (Not a digit.)
– Cannot be a reserved word.
 See Appendix A of text for list of reserved words.
– Cannot be true, false or null.
– Have no limit to length.
int myvar1;
double total = 0.0;
String _StudentNameValue;
int ___placemarker;
Summer 2008 Q1
Version 1.2
7
Arithmetic Expressions
 Most programs will need to support numeric calculations.
 This is accomplished via statements that combine variables with the
arithmetic operators.
– +, -, *, /, %.
 These operators are the binary operators.
– They require left and right operands.
 There are also a number of unary operators, notably:
– ++, --, +=, -=, *=, /=.
 The complete set of Java operators, and their precedence, is shown on
Page 86.
Summer 2008 Q1
Version 1.2
8
Type Casting
 Type casting involves stating what your target data type is.
 Syntax is to place target data type within parentheses, in front of data
to be converted.
int j;
j = (int) 3.24;
Summer 2008 Q1
Version 1.2
9
Formatting Numbers





Unless you request it, numeric output is raw and often ugly.
Formatting numbers in Java is not hard, but it is not intuitive.
Must make use of the NumberFormat object.
We create a variable that acts as the formatting tool.
When we want to display the number formatted, as ask the tool to do
its job.
NumberFormat numberformat =
NumberFormat.getInstance(Locale.US);
System.out.print(numberformat.format(dblFarenheit));
Summer 2008 Q1
Version 1.2
10
Formatting Numbers


Must import the java.util.NumberFormat package, or java.util.*.
There are different types of formatting instances available to you.
– Each customized to different types of numbers.
form
form
form
form

=
=
=
=
NumberFormat.getInstance();
NumberFormat.getIntegerInstance();
NumberFormat.getCurrencyInstance();
NumberFormat.getPercentInstance();
NumberFormat also supports several methods to control such things as
number of decimal places.
form.setMaximumFractionDigits(2);
form.setMinimumFractionDigits(2);


See the Java Online documentation for full information.
See the solutions to last weeks in-class work on Blackboard.
Summer 2008 Q1
Version 1.2
11
Getting User Input
 Unfortunately, not as easy as it should be in Java.
 Two choices:
– Use a Scanner object (newer technique).
– Use an InputStream object (older technique).
 Scanner somewhat easier, but can be cranky.
 InputStream bulletproof, but harder to use.
 I have provided two examples of code using each technique.
Summer 2008 Q1
Version 1.2
12
Input Via Scanner
 Must import the java.util.Scanner package, or java.util.*.
 See Section 2.13 of text for discussion on use.
 To actually get input, must use of the “next” methods.
– Text does not list nextLine(), but it is another string input method.
Scanner scanner = new Scanner(System.in);
System.out.print("Enter an integer value: ");
int intval = scanner.nextInt();
Summer 2008 Q1
Version 1.2
13
Scanner Secret!
 next() method only gets first chunk of a string if it has spaces.
– Must use nextLine() if you want a whole line of input that includes spaces.
– But nextLine() will be fooled by any previous input of numeric values.
 This is because nextInt(), nextDouble() leave the enter key character(s) in the
keyboard buffer.
– To successfully use the Scanner to get strings from the keyboard, clear it
before asking for input.
 But only if you have previous input.
Scanner scanner = new Scanner(System.in);
scanner.nextLine(); // This clears things out first.
System.out.print("Enter your full name: ");
String fullname = scanner.nextLine();
Summer 2008 Q1
Version 1.2
14
The Input Stream Approach
 This is the original way that Java console input was conducted.
 Requires several things to be done with your code to get it set up
properly.
 Step 1: Indicate that your main() method throws and IOException.
public static void main(String args[])
throws IOException
Summer 2008 Q1
Version 1.2
15
The Input Stream Approach
 Step 2: Create a BufferedReader object.
// Set up input channel.
BufferedReader in =
new BufferedReader(new
InputStreamReader(System.in));
Summer 2008 Q1
Version 1.2
16
The Input Stream Approach
 Step 3: Read in a line of input.
– Note: All input that comes in is a character string.
String input;
System.out.print("Enter adjusted gross income: ");
input = in.readLine();
Summer 2008 Q1
Version 1.2
17
The Input Stream Approach
 Step 4: Converting to your target data type.
– Note: All intrinsic data types have a partner reference type (class) that
supports parsing of values from a string.
– This is very similar to what you did in HTML class with JavaScript.
income = Double.parseDouble(input);
Summer 2008 Q1
Version 1.2
18
The Input Stream Approach
 Putting it all together (complete code on Blackboard).
public static void main(String args[])
throws IOException
{
// Set up input channel.
BufferedReader in =
new BufferedReader(new
InputStreamReader(System.in));
// Declare support variables.
double income,taxdue;
String input;
System.out.print("Enter adjusted gross income: ");
input = in.readLine();
income = Double.parseDouble(input);
Summer 2008 Q1
Version 1.2
19
If Statements
 First, let’s look at the available relational operators:
–
–
–
–
–
–
==
!=
<
>
<=
>=
Equal to
Not equal to
Less than
Greater than
Less than or equal
Greater than or equal
 These are complemented by the compound operators:
– &&
– ||
And
Or
 Defined on Page 68.
Summer 2008 Q1
Version 1.2
20
If Statements




Refer to Chapter 3 in text.
Used to code decision making statements in programs.
Result of an if test is true or false.
Syntax requires use of parentheses.
if (g > 2)
g = 14;
Summer 2008 Q1
Version 1.2
21
If Statements
 General syntax:
if ()
{
}
else if()
{
}
else
{
}
Summer 2008 Q1
Version 1.2
22
If Blocks
 When more than one statement is to be executed (if the logical test is
true), braces are used to form a block:
if (a >= b)
{
a = 3*b;
i = i + 1;
}
Summer 2008 Q1
Version 1.2
23
The Else Clause
 Many times it is necessary to take actions both when a condition is true
or if it is false.
 The else clause allows expansion of the if to accommodate this
situation.
Summer 2008 Q1
Version 1.2
24
Else Clause
 When more than one statement is to be executed (if the logical test is
true), braces are used to form a block:
if (a < b + 10)
{
System.out.println(“Curing too rapidly.”);
}
else
{
iter = iter + 1;
}
Summer 2008 Q1
Version 1.2
25
The Else If Extension
 Multiple tests can be constructed through use of else if.
if (g + 1 != a*b)
g = g + 1;
else if (a < 10)
g = 2*g;
else if (a*b > 350)
g = g*g;
else
g = 0;
Summer 2008 Q1
Version 1.2
26
Nested If Statements
 If statements can be placed within other if statements.
if (g + 1 != a*b)
{
g = g + 1;
if (a < 10)
g = 2*g;
else if (a*b > 350)
g = g*g;
else
g = 0;
}
Summer 2008 Q1
Version 1.2
27
Nested If Statements
 Be wary of how you structure nested ifs.
 An else always belongs to the nearest preceding if that’s not already
associated with another else.
 What does following code do?
int g = 3;
int a = 0;
if (g != 3)
if (a < 10)
System.out.println(“a < 10”);
else
System.out.println(“a not < 10”);
Summer 2008 Q1
Version 1.2
28
Compound IF Statements
 Simple relational expressions can be joined into more complex
expressions via the compound operators.
 && Logical AND
 ||
Logical OR
 These operators have a precedence.
And before or.
if (a < 10 && b == 3)
System.out.printf(“%d %d\n”,a,b);
Summer 2008 Q1
Version 1.2
29
Switch Statements
 Switch statements are like if statements in many ways.
– They clean up the syntax a little bit.




Similar to case statements of other languages.
Means to compare an integer value against a list of cases.
Refer to Page 81 of text.
The break statement needed to prevent fall through execution.
Summer 2008 Q1
Version 1.2
30
Switch Statements
 General syntax:
switch (expression)
{
case constant1: statement sequence
case constant2: statement sequence
.
.
default: statement sequence
}
Summer 2008 Q1
Version 1.2
31
Switch Statements
 Specific example:
switch (a)
{
case 1 : System.out.println(“a = 1”);
break;
case 2 : System.out.println(“a = 2”);
break;
default : System.out.println(“a is not 1 or 2”);
}
Summer 2008 Q1
Version 1.2
32
Formatting Output
 This is alternative to using NumberFormat object.
 The printf statement together with formatting codes can achieve a
limited degree of output formatting.
 See Tables 3.8 and 3.9 for available codes.
System.out.printf(“The value is %d dollars”,dblDollar);
System.out.printf(“The value is %10.2f dollars”,
dblDollar);
System.out.printf(“%25s\n”,”Bob”);
Summer 2008 Q1
Version 1.2
33
Coding Sessions
 Group work #1:
– Write a program that reads a grade of A, B, C, D or F and then prints
“excellent”, “good”, “fair”, “poor” or “failure”.
– Use the if – else structure.
 Group work #2:
– Revise the above program to use a switch structure.
Summer 2008 Q1
Version 1.2
34
Coding Sessions
 Practice work:
– Write a program that reads a user’s age and then prints:
 “You are a child” if the age is less than 18.
 “You are an adult” if the age is greater than or equal to 18 and less than 65.
 “You are a senior citizen” if the age is greater than or equal to 65.
Summer 2008 Q1
Version 1.2
35
Assignments
 Reading: Chapters 3 and 4 from text.
 Assignment 2.
– Due next week.
 Assignment 1 due today.
 Participate in discussion forums.
Summer 2008 Q1
Version 1.2
36