Slides 2 - Input, Assignment, Arithmetic Expressions, Strings
Slides 2 - Input, Assignment, Arithmetic Expressions, Strings
OBJECT ORIENTED
PROGRAMMING I
n 2
7. Numeric Console Input
Class Libraries & Packages
■ A class library (ex: Java standard class library) is a
collection of classes that we can use when developing
programs
■ The classes of the Java standard class library are
organized into packages
Package Purpose
n 4
Console Input
q since Java 5.0, use the Scanner class
1. import java.util.Scanner;
2. Scanner myKeyboard = new Scanner(System.in);
n 5
To read from a scanner
qto read tokens, use a nextSomething() method
– nextBoolean(),
– nextByte(), tokens are delimited by
whitespaces (blank spaces,
– nextInt(),
tabs, and line breaks)
– nextFloat(),
– nextDouble(),
– next(), Will see later in the chapter
– nextLine() Will see later in the chapter
– …
Scanner myKeyboard = new Scanner(System.in);
System.out.println("Your name:");
String name = myKeyboard.next();
System.out.println("Welcome " + name + " Enter your age:");
int age = myKeyboard.nextInt();
n 6
Example 1: ScannerDemo1.java
//*****************************************************
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read numeric tokens from
// the console with the Scanner class
//*****************************************************
import java.util.Scanner; // we need to import this class
n 7
Example 1: ScannerDemo1.java
// let's ask the user for some input
System.out.println("Enter the number of pods followed by");
System.out.println("the number of peas in a pod:");
// let's read the user input (2 integers that we assign to 2
// variables)
int numberOfPods = keyboard.nextInt( );
int peasPerPod = keyboard.nextInt( );
int totalNumberOfPeas = numberOfPods*peasPerPod;
n 8
Example 1: ScannerDemo1.java
// let's display some output
System.out.print(numberOfPods + " pods and ");
System.out.println(peasPerPod + " peas per pod.");
System.out.println("The total number of peas = "
+ totalNumberOfPeas);
// close the Scanner
keyboard.close();
} // end of main()
} // end of class ScannerDemo1
n 9
Example 2: ScannerDemo2.java
//*******************************************************
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read various types
// of token with the Scanner class
//*******************************************************
import java.util.Scanner;
public class ScannerDemo2
{
public static void main(String[] args)
{
// let's try to read integers
int n1, n2; // let's declare 2 variables for our tests
// let's declare our scanner object
Scanner scannerObject = new Scanner(System.in);
n 10
Example 2: ScannerDemo2.java
// let’s read two whole numbers (integers)
System.out.println("Enter two whole numbers ");
System.out.println("separated by one or more spaces:");
n 11
Example 2: ScannerDemo2.java
System.out.println("Next enter two numbers with a decimal
point.");
System.out.println("Decimal points are allowed.");
// let's try to read doubles now
double d1, d2;
d1 = scannerObject.nextDouble( );
d2 = scannerObject.nextDouble( );
System.out.println("You entered " + d1 + " and " + d2);
// close the Scanner
scannerObject.close();
} // end of main()
} // end of class ScannerDemo2
n 12
close() method
qGood habit to close a Scanner object, at the end of your
program
qEx:
Say created a Scanner object called keyIn as follows
q Semantics:
1. the expression on the right is evaluated
2. the result is stored in the variable on the left (overwrite
any previous value)
3. The entire assignment expression is worth the value of
the RHS
n 14
Example
public class Geometry
{
// Prints the number of sides of several geometric shapes.
public static void main (String[] args)
{
int sides = 7; // declaration with initialization
System.out.println("A heptagon has " + sides + " sides.");
Output
n 15
Difference with the math =
q In Java, = is an operator
q In math, = is an equality relation
In math… a+6 = 10 ok
In Java… a+6 = 10;
n 16
Examples
q Declarations:
int x;
int y = 10;
char c1 = ’a’;
char c2 = ’b’;
q Statements:
x = 20+5;
y = x;
c1 = ’x’;
c2 = c1;
n 17
Swap content of 2 variables
q Write a series of declarations & statements to swap the
value of 2 variables…
A) x = y; y = x;
B) y = x; x = y;
C) Both A) & B) will work
D) Neither A) nor B) will work
n 18
9 - Arithmetic Expressions
q An expression is a combination of one or more
operands and their operators
q Arithmetic operators:
Addition +
Subtraction -
Multiplication *
Division /
Remainder %
n 19
Division and Remainder …
the division operator (/) can be:
qInteger division
• if both operands are integers
10 / 8 equals? 1
8 / 12 equals? 0
q Real division
• otherwise 10.0 / 8 equals? 1.25
8 / 12.0 equals? 0.6667
n 20
Division and Remainder
n 21
Operator Precedence
q Operators can be combined into complex expressions
result = total + count / max - offset;
n 22
Operator Associativity
q Unary operators of equal precedence are grouped
right-to-left
+-+rate is evaluated as +(-(+rate))
n 23
Example
q What is the order of evaluation in the following
expressions?
a + b + c + d + e a + b * c - d / e
a / (b + c) - d % e a / (b * (c + (d - e)))
n 24
Assignment Revisited
q The assignment operator has a lower precedence than
the arithmetic operators
First the expression on the RHS is evaluated
n 25
You try
A) 0
B) 18
C) 25
D) 10
n 26
Let’s put it all together
q Purpose:
– Conversion of degrees Fahrenheit in degrees Celsius
q Algorithm:
1. Assign the temperature in Fahrenheit (ex. 100 degrees)
2. Calculate the temperature un Celsius (1 Celsius = 5/9 (Fahr – 32)
3. Display temperature in Celsius
q Variables and constants:
Data Identifier Type var or const?
Temperature in Fahrenheit fahr double
n 27
The Java program
//**********************************************************
// Temperature.java Author: your name
// A program to convert degrees Fahrenheit in degrees Celsius.
//**********************************************************
public class Temperature {
public static void main (String[] args)
{
// Declaration of variables and constants
}
}
filename???
n28
10 - More assignment operators
q in addition to =
q often we perform an operation on a variable, and then
store the result back into that variable
q Java has shortcut assignment operators:
variable = variable operator expression;
variable operator= expression;
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x = x / y
%= x %= y x = x % y
n 29
Shorthand Assignment Statements
Example: Equivalent To:
count += 2; count = count + 2;
n 30
Assignment operators
q The behavior of some assignment operators
depends on the types of the operands
q ex: the +=
• If the operands are strings, += performs string
concatenation
n 31
Example
int amount = 10;
amount += 5;
System.out.println(amount);
n 33
Increment and Decrement
The increment and decrement operators can be in:
q in prefix form - ex: ++count;
1. the variable is incremented/decremented by 1
2. the value of the entire expression is the new
value of the variable (after the
incrementation/decrementation)
q in postfix form: - ex: count++;
1. the variable is incremented/decremented by 1
2. the value of the entire expression is the old value
of the variable (before the
incrementation/decrementation)
n 34
Example
int nb = 50; int nb = 50;
++nb; nb++;
value of nb value of nb
int nb = 50;
int x; value of nb & x
x = nb++ + 10;
n 35
Example
int nb = 50; int nb = 50;
int x; int x;
x = ++nb + nb; x = nb++ + nb;
n 36
You try
What is stored in the integer variables num1, num2 and
num3 after the following statements?
int num1 = 1, num2 = 0;
int num3 = 2 * num1++ + --num2 * 5;
A) 13
B) 20
C) 23
D) No idea???
n 38
You try
What is stored in the integers a and c after the following
statements?
int a = 1;
int c = a++ + a--;
A) a = 1, c = 2
B) a = 1, c = 3
C) a = 3, c = 3
D) No idea???
n 39
You try
What is stored in the integer c after the following statements?
int a = 1, b = 2;
int c = a++ + a + 2*(-- b) + 3/b--;
A) 7
B) 8
C) 8.5
D) No idea???
n 40
Summary of ++ and - -
n 41
11 - Assignment Compatibility
q In general, the value of one type cannot be stored in a
variable of another type
int intVariable = 2.99; //Illegal
n 42
Assignment Compatibility
q an expression has a value and a type
2 / 4 (value = 0, type = int)
2 / 4.0 (value = 0.5, type = double)
n 43
Arithmetic promotion
q happens automatically, if the operands of an expression are
of different types
aLong + anInt * aDouble
q operands are promoted so that they have the same type
q promotion rules:
• if 1 operand is of type… the others are promoted to…
double double
float float (double)
long long
• short, byte and char are always converted to int
n 44
Examples
(aByte + anotherByte) --> int
(aLong + anInt * aDouble) --> ??
(aFloat - aBoolean) --> ??
n 45
Examples
q What is the value and type of this expression?
2 / 4 * 1.0
A) 0 (int)
B) 0.0 (double)
C) 0.5 (int)
D) 0.5 (double)
n 46
Examples
q What is the value and type of this expression?
1.0 * 2 / 4
A) 0 (int)
B) 0.0 (double)
C) 0.5 (int)
D) 0.5 (double)
n 47
Assignment conversions
q occurs when an expression of one type is assigned to a variable of
another type
var = expression;
q widening conversion
• if the variable has a wider type than the expression
• then, the expression is widened automatically
n 48
Assignment conversions
q narrowing conversion
• if the variable has a smaller type than the
expression then, compilation error, because
possible loss of information
int aVar;
aVar = 3.7; ok?
n 49
Casting
q the programmer can explicitly force a type conversion
q syntax: (desired_type) expression_to_convert
int aVar; byte aByte;
aVar = (int)3.7; int anInt = 75;
(aVar is 3… not 4!) aByte = anInt; // ok?
aByte = (byte)anInt; // ok?
double d;
d = 2/4; // d is 0
d = (double)2/4; // d is 0.5
// 2.0 / 4
d = (double)(2/4); // d is 0.0
Casting can be dangerous! you better know what you're
doing…
n 50
Examples
q Which of the following assignment statements are valid?
byte b1 = 1, b2 = 127, b3;
b3 = b1 + b2; // statement a)
b3 = 1 + b2 // statement b)
b3 = (byte)1 + b2 // statement c)
n 51
Examples
q Which of the following assignment statements are valid?
byte b1 = 1, b2 = 127, b3;
b3 = b1 + b2; // statement a)
b3 = 1 + b2; // statement b)
b3 = (byte)1 + b2; // statement c)
n 52
12- Strings
q so far we have seen only primitive types
q a variable can be either:
• a primitive type
- ex: int, float, boolean, …
• or a reference to an object
- ex: String, Array, …
q A character string:
• is an object defined by the String class
• delimited by double quotation marks ex: "hello", "a"
- System.out.print("hello"); // string of characters
- System.out.print('a'); // single character
n 53
Declaring Strings
1. declare a reference to a String object
String title;
n 54
Declaring Strings
q Because strings are so common, we don't have to use the
new operator to create a String object
String title;
title = new String("content of the string");
String title;
title = "content of the string";
n 55
Strings
q once a string is created, its value cannot be modified (the object
is immutable)
• cannot lengthen/shorten it
• cannot modify its content
n 56
String indexes start at zero
n 57
Example – StringTest.java
public class StringTest {
public static void main (String[] args) {
String string1 = new String ("This is a string");
String string2 = ""; ???
Output
System.out.println("Content of string1: \"" + string1 + "\"");
System.out.println("Length of string1: " + string1.length());
System.out.println("Content of string2: \"" + string2 + "\"");
System.out.println("Length of string2: " + string2.length());
n 58
Example …
// String string1 = new String ("This is a string");
// String string2 = "";
System.out.println(string2); Output
???
System.out.println(string3);
System.out.println(string4);
System.out.println(string5);
} }
n 59
Example 3: ScannerDemo3.java
//************************************************************
// Author: W. Savitch (modified by N. Acemian)
//
// This program demonstrates how to read String tokens with
// the Scanner class
//************************************************************
import java.util.Scanner;
public class ScannerDemo3
{
public static void main(String[] args) {
//Let's declare our Scanner object
Scanner scannerObject = new Scanner(System.in);
// let's try to read 2 "words" now
System.out.println("Next enter two words:");
String word1 = scannerObject.next( );
String word2 = scannerObject.next( );
System.out.println("You entered \"" + word1 + "\" and \""
+ word2 + "\"");
n 60
Example 3: ScannerDemo3.java
//To get rid of '\n‘
// Close Scanner
scannerObject.close();
} // end of main()
}// end of class ScannerDemo3
n 61
A note on readLine
q nextLine reads the remainder of a line of text starting where the last reading left
off
q This can cause problems when combining it with different methods for reading
from the keyboard such as nextInt
q ex:
Scanner keyboard = new Scanner(System.in);
int n = keyboard.nextInt();
String s1 = keyboard.nextLine();
String s2 = keyboard.nextLine();
input: need an extra invocation
2 of nextLine to get rid of
Heads are better than the end of line character
1 head.
after the 2
what are the values of n, s1, and s2?
n 62
close() method