Evil Number Java Program | ISC Computer Science 2021 Paper 1

Design a class Evil to check if a given number is an evil number or not. A number is said to be evil if the binary equivalent of the number contains even number of 1s.

Example: If the number is 17, then its binary equivalent = 10001 (which contains even number of 1s). Thus, 17 is an evil number.

Some of the members of the class are given below:

Class name: Evil
Data members/instance variables:
num: to store a positive integer
Methods/Member functions:
Evil(): default constructor to initialize the data member with legal initial value
void getnum(): to accept a positive integer
int bin_convert(int n): returns the binary equivalent of the integer parameter ‘n’ using recursive technique
void isEvil(): checks whether the given number is an evil number by invoking the function bin_convert() and displays the result with an appropriate message

Specify the class Evil giving details of the constructor(), void getnum(), int bin_convert(int) and void isEvil(). Define a main() function to create an object and call the functions accordingly to enable the task.

import java.util.Scanner;
class Evil{
    int num;
    public Evil(){
        num = 0;
    }
    public void getnum(){
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a positive integer: ");
        num = Integer.parseInt(in.nextLine());
        num = Math.abs(num);
    }
    public int bin_convert(int n){
        if(n == 0 || n == 1)
            return n;
        return bin_convert(n / 2) * 10 + n % 2;
    }
    public void isEvil(){
        int count = 0;
        int bin = bin_convert(num);
        System.out.println("BINARY EQUIVALENT: " + bin);
        while(bin > 0){
            if(bin % 10 == 1)
                count++;
            bin /= 10;
        }
        if(count % 2 == 0)
            System.out.println("EVIL NUMBER");
        else
            System.out.println("NOT AN EVIL NUMBER");
    }
    public static void main(String[] args){
        Evil obj = new Evil();
        obj.getnum();
        obj.isEvil();
    }
}