Write a Java program to find if a number is odd or even is one of the
basic programming exercise, and anyone will be happy to see this in actual Java
Interviews, wouldn't you? By the way did I said easy, well there is a little
twist there, you need to check odd and even without using modulus
(%) or remainder operator in Java. Since many programmers, especially
freshers are familiar with % operator, this nice little trick does put them
into thinking mode, which is what interviewer wants. This question is on
similar level of checking if a number is palindrome or not,
if you have practiced such questions, it would be easy to find solution. Any way,
now, it's your turn to show off how good are you with different operators in
Java and how quickly you can think of alternative solutions. Well, there are
couple of ways to check if a number is
even or odd without using modulus operator. First one is, by using division
operator, and second method is by using bitwise operator in Java. An
even number is an integer number is totally divisible by 2 i.e. when you divide
even number by 2, remainder is zero. While an odd number is an integer number, which is not
multiple of two, if we divide odd number by 2, result would be fraction. If we
focus on this definition, we always think about remainder operator, but we can
still use division operator to check if number is even and odd, how? let's see.
Even or Odd using division operator
Division operator in Java returns quotient, if we
first divide a number by two and then multiply result which is quotient to two,
we will get a number which is always less in case of odd number and always
equal in case of even number. By using this property you can check if a number
is odd or even :
int quotient = number/2;
if(quotient*2== number){
System.out.println("Even number");
}
Odd or Even checking using bitwise AND
operator
Another way to solve this problem without using modulus operator is, by
using bitwise AND operator. Since
integer numbers are represented as 2's complement and even number has 0 as
there LSB, if we perform a bitwise AND between 1 and number, result will be
zero. This would be enough to check if a number is even or odd in Java.
if((number & 1) == 0){
System.out.println("Even number");
}
Here is complete Java program to
test if number is even or odd without using modulus operator . This program
uses both the approach e.g. using division and bitwise operator to identify if
a number is odd or even.
/**
* Java program to check if a number is even or odd without using modulus or remainder
* operator. This examples uses bitwise AND and division operator to check evenness.
*
* @author Javin Paul
*/
public class EvenOrOdd {
public static void main(String args[]) {
//Testing, let's test both methods for positive and negative integers
System.out.println("Checking if a number is even or odd using division and bitwise operator");
for(int i= -1; i<2; i++){
isEvenOrOdd(i); //calling division operator method
isOddOrEven(i); //calling
}
}
/*
* checking even and odd number without using modulus or remainder operator, Instead
* this method uses division operator.
*/
public static void isEvenOrOdd(int number){
int quotient = number/2;
if(quotient*2== number){
System.out.println("Using division operator: " + number + " is Even number");
}else{
System.out.println("Using division operator: " + number + " is Odd number");
}
}
/*
* This method uses bitwise AND (&) operator to check if a number is
* even or odd in Java
*/
public static void isOddOrEven(int number){
if((number & 1) == 0){
System.out.println("Using bitwise operator: " + number + " is Even number");
}else{
System.out.println("Using bitwise operator: " + number + " is Odd number");
}
}
}
Output:
Checking if a number is even or odd using division and bitwise operator
Using division operator: -1 is Odd number
Using bitwise operator: -1 is Odd number
Using division operator: 0 is Even number
Using bitwise operator: 0 is Even number
Using division operator: 1 is Odd number
Using bitwise operator: 1 is Odd number
That's all on How to find if an integer is even or odd in Java,
without using modules or remainder operator. Interviewer, may twist this question more,
by not allowing you to either use bitwise operator or division operator, that's
why it's better to know different alternatives to solve a problem, even if you
think that a trivial programming exercise.
Tidak ada komentar:
Posting Komentar