Transcript Lect04B

More on Assignment and Console Input
Overview

Increment & Decrement Operators

Short-cut Operators

Casting

Math class

Console Input (TextIO class)

Preview: Control Structures
1
Increment or Decrement Operators
Increment/decrement operations (count = count
+1) are very common in programming. Java provides
operators that make these operations shorter.
Operator
Use
Description
++
op++
Increments op by 1;
evaluates to a value
before incrementing
++
++op
Increments op by 1;
evaluates to a value
after incrementing
--
op--
Decrements op by 1;
evaluates to a value
before decrementing
--
--op
Decrements op by 1;
evaluates to a value
after decrementing
2
Increment or Decrement Operators
Example :
1. What is the value of j and i after executing the following code?
i = 1;
j = 5;
j = ++i;
2. What is the value of j and i after executing the following
code?
i = 10;
j = 50;
j = i--;
3. What is the value of j and i after executing the following
code?
i = 5;
j = 10;
i++;
++j;
3
Short Hand Operators
Java also provides a number of operators that can be used as a
short-cut for performing arithmetic operations on a variable
and assigning the result to the same variable.
Operator Short-Form
+=
-=
*=
/=
%=
op1
op1
op1
op1
op1
+=
-=
*=
/=
%=
Equivalent to
op2
op2
op2
op2
op2
op1
op1
op1
op1
op1
=
=
=
=
=
op1
op1
op1
op1
op1
+
*
/
%
op2
op2
op2
op2
op2
Example :
Instead of writing
a = a + 5
We can write
a += 5
If the variable name on both sides of assignment operator are same
then bring the operator , before the = operator.
a
= a
+
5
4
Casting
• We learnt earlier that the following division
5 / 2
results in 2
Because the / operator is operating between 2 integer
type constants and so the result will be an integer.
To get 2.5 , we need to convert either 1 or both the
operands to double . Then the division will look like
5.0 / 2.0
But what if we have integer variables to divide each
other, like a / b ?
For this, cast operator is used .
(double) a / (double) b
5
Primitive Casting
• Conversion of primitives is accomplished by
(1) assignment and/or (2) explicit casting:
int total = 100;
float temp = total;
now holds 100.0
// temp
• When changing type that will result in a loss of
precision, an explicit ‘cast’ is needed. This is
done by placing the new type in parenthesis:
float total = 100F;
int temp = total; // ERROR!
int start = (int) total;
6
Methods in java.lang.Math
Method
Argument type(s)
Functionality
Math.abs(a)
Int/ long/ float/ double
Absolute value
Math.ceil (a)
Double
Smallest whole number
greater than or equal to a
Math.cos(a)
Double
Cosine
Math.exp(a)
Double
Exponential number to the
power of a
Math.floor(a)
Double
Largest whole number less
than or equal to a
Math.log(a)
Double
Natural logarithm of a
Math.max(a, b) Int/ long/ float/ double
Maximum
Math.min(a, b)
Minimum
Int/ long/ floa / double
Math.pow(a, b) Double
a to the power of b
Math.random() None
Random number generator
Math.rint(a)
Double
Converts double value to
integral value in double
format
Math.round(a)
Double
Rounds into closest long
Math.sin(a)
Double
Sine
Math.sqrt(a)
Double
Square root
Math.tan(a)
Double
Tangent
7
Console Input



Reading input from the console (text mode) is a bit complex
for beginners to Java.
To avoid this complexity, we shall initially be using a class,
TextIO, which has been designed to simplify console input
operations.
The TextIO class has the following methods which are used
to read the desired type of input.
readByte()
: reads a byte from the data source.
readChar()
: reads a character.
readDouble()
: reads a double
readFloat()
: reads a floate.
readInt()
: reads an integer.
readLong()
: reads a long integer.
readShort()
: reads a short integer.
readString(): reads a string made out of non-white
space
8
Console Input

To use the TextIO class, you need to add the
following pieces of code to your programs:
» Import the TextIO class by placing the following
import statement at the beginning of your program:
import TextIO;
» Create a TextIO object as a field inside your class:
static TextIO stdin = new
TextIO(System.in);
Note: The parmeter to TextIO can be keyboard
(System.in), a data file or a URL
» Change the heading of the main method as follows:


public static void main(String[]
args) throws java.io.IOException;
For all these to work, you need to copy the file
TextIO.class to the same folder containing your
program.
You can get the TextIO.class as well as its source
(.java) on the following URL:
http://www.ccse.kfupm.edu.sa/~bmghandi/001/utils.html
9
Evaluating Expressions
Arithmetic Expression Example
import TextIO;
class Expressions {
static TextIO stdin = new
TextIO(System.in);
public static void
main(String[]args) throws
java.io.IOException {
double e;
int a, b, c;
a = stdin.readInt();
b = stdin.readInt();
c = stdin.readInt();
e = a + b * c;
System.out.println("a+b*c = " + e);
}
}
10
Evaluating Arithmetic Expression With Simple
Math functions - Example
import TextIO;
class Expressions {
static TextIO stdin = new
TextIO(System.in);
public static void main(String[]args)
throws java.io.IOException {
double a,c;
int r;
r = stdin.readInt();
a = Math.PI * Math.pow(r,2);
c = 2 * Math.PI * r;
System.out.println("Area = " + a);
System.out.println("Circum. =" + c);
}
}
11