Boolean expressions, part 1: Compare operators

advertisement
Boolean expressions, part 1:
Compare operators
Compare operators
• Compare operators
• Compare operators compare 2 numerical values and
return a Boolean (logical) value
• A compare operator will return the value true if the test
is successful
A compare operator will return the value false if the test
is unsuccessful
Compare operators (cont.)
• Compare operators in Java:
Operator symbol
Example
Meaning
<
a<b
Returns true if a < b,
otherwise returns false
<=
a <= b
Returns true if a ≤ b,
otherwise returns false
>
a>b
Returns true if a > b,
otherwise returns false
>=
a >= b
Returns true if a ≥ b,
otherwise returns false
==
a == b
Returns true if a is not
equal to b, otherwise returns
false
!=
a != b
Returns true if a is not
equal to b, otherwise returns
false
Example program: test divisibility
• Problem description:
• Write a Java program that reads in a number a and a
number b
• The program print a message when a is divisible by b
• Algorithm:
• A number a is divisible by the number b if and only if:
•The remainder of the division a/b is equal to 0
Example program: test divisibility (cont.)
• Java program:
import java.util.Scanner;
public class Divisible
{
public static void main(String[] args)
{
int a, b;
Scanner in = new Scanner(System.in); // Construct Scanner
object
System.out.print("Enter a: ");
a = in.nextInt(); // Read in number into a
System.out.print("Enter b: ");
b = in.nextInt(); // Read in number into b
if ( (a % b) == 0 )
System.out.println(a + " is divisible by " + b);
}
}
Example program: test divisibility (cont.)
• Explanation:
• The expression (a % b) == 0 will:
1. First compute the remainder of the division
a/b
2. Then compare the result (i.e., the remainder
of the division) to the value 0
Example program: test divisibility (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/06/Progs/
Divisible01.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac Divisible01.java
• To run:
java Divisible01
Comparing integer and floating point values
• Automatic conversion rule for compare operators:
• The same automatic conversion rules used for
arithmetic operators apply for compare operators
• The automatic conversion rules for arithmetic
operators were summarized on this webpage:
http://mathcs.emory.edu/~cheung/Courses/170/S
yllabus/04/conversion.html
Priority of the compare operators
• For practical purposes, you can assume that:
• All compare operators have the same priority This is
because you cannot have back to back compare operations
Example: this is illegal
a < b == c
Because you cannot have back to back compare operations,
there is no need to decide which one has higher priority.
Priority of the compare operators (cont.)
• Priority ranking of the compare operators against the
previously discussed operators:
Priority level
Operator(s)
Description
Associativity
1
()
Brackets
2
(int) −
Casting, negation
3
++, --
Increment,
decrement
4
* / %
Multiple, divide,
remainder
Left to right
5
+ -
Add, subtract
Left to right
6
< <= > >=
== !=
Compare operators
7
= += -= ...
Assignment
operators
Right to left
Right to left
Priority of the compare operators (cont.)
• Reference:
http://introcs.cs.princeton.edu/java/11precedence/
Priority of the compare operators (cont.)
• Example 1:
boolean a;
Statement:
a = 3 > 1;
Operators in statement: = >
Executed as follows:
a = 3 > 1; // > has higher priority than =
a = true;
Priority of the compare operators (cont.)
• Example 2:
boolean a;
Statement:
a = 3 + 4 <= 5 - 2;
Operators in statement: = + <= Executed as follows:
a = 3 + 4 <= 5 - 2; // + and - has highest priority
a = 7 <= 3;
a = true;
// <= has higher priority than =
Download