In this HackerEarth Notes and coins <OOPS - Java, Java8> problem solution you are given M number of coins and P number of notes. Write a program to separate the two forms of money without creating two separate classes for notes and coins.


HackerEarth Notes and coins <OOPS - Java, Java8> problem solution


HackerEarth Notes and coins OOPS - Java, Java8 problem solution.

import java.util.*;
interface Executable
{
    int getValue();
}
class Coin implements Executable
{
    int val;
    public void setValue(int val)
    {
        this.val=val;
    }
    public int getValue()
    {
        return this.val;
    }
}
class Note implements Executable
{
    int val;
    public void setValue(int val)
    {
        this.val=val;
    }
    public int getValue()
    {
        return this.val;
    }   
}
class Bag<T extends Executable>
{
    ArrayList<T> al=new ArrayList<T>();
    public void add(T obj)
    {
        al.add(obj);
    }
    public void display()
    {
        for(T obj : al)
        {
            System.out.println(obj.getValue());
        }
    }
}
class Main
{
    public static void main(String args[])
    {
        Scanner sc=new Scanner(System.in);
        int n,val=0;
        String str="";
        //Scan Total number of Coins and Notes
        //given by client
        n=sc.nextInt();
        //A bag to store Coins
        Bag<Coin> bagOfCoins=new Bag<Coin>();
        //A bag to store Notes
        Bag<Note> bagOfNotes=new Bag<Note>();
        for(int i=0;i<n;i++)
        {
            //Scan whether its a Coin or a Note
            str=sc.next();
            //Scan the denomination of the Coin/Note
            val=sc.nextInt();
            switch(str)
            {
                case  "Coin":
                    Coin coin=new Coin();
                    //Set the value of Coin and add it to the bag
                    coin.setValue(val);
                    bagOfCoins.add(coin);
                    break;
                case  "Note":
                    Note note=new Note();
                    //Set the value of Note and add it to the bag
                    note.setValue(val);
                    bagOfNotes.add(note);
                    break;
            }
        }
        System.out.println("Coins :");
        bagOfCoins.display();
        System.out.println("Notes :");
        bagOfNotes.display();
    }
}