Programming In Java | Week 9

Programming In Java Week 9 Answers NPTEL

Quiz

Q1. Which of the following is/are correct regarding events in Java?
a. EventObject is super class of all the events.
b. AdjustmentEvent will be notified if scroll bar is manipulated.

c. All the classes and methods required for even handling in Java is in java.io package.
d. getID() method can be used to determine the name of an event.

Q2. Which of the following classes is used to display a message dialog in Java Swing?
a. JOptionPane
b. IDialog
c. JMessageDialog
d. JFrame

Q3. Which of the following event is occurred when a button is pressed, a list item is double-clicked or a menu item is selected?
a. AdjustmentEvent
b. ActionEvent
c. ContainerEvent
d. ComponentEvent

Q4. Which of the statements are correct about Swing programming?
a. AWT is a heavyweight programming.
b. Swing is heavyweight programming.
c. Swing is lightweight programming.
d. Both AWT and Swing are lightweight programming.

Q5. Event class is defined in which of the following libraries?
a. java.io
b. javalang
c. java.net
d. java.util

Q6. Which of the following is/are class(es) in javax.swing package?
a. BoxLayout
b. MenuElement
c. JComponent
d. Scrollable

Q7. Which of the following statement(s) is/are true?
a. Swing component frame does not support Window Listner.
b. Swing component combobox does not support Window Listner.
c. Swing component checkbox does not support Window Listner.

d. Swing component dialog does not support Window Listner.

Q8. A class which implements the ActionListener interface, also it must implement which of the following methods?
a. void handle( ActionEvent e )
b. void actionPerformed( ActionEvent e )
c. void eventDispatched( AWTEvent e )
d. String getActionCommand( ActionEvent e )

Q9. When a component is added or removed, which of the following events is generated?
a. ComponentEvent
b. ContainerEvent
c. FocusEvent
d. InputEvent

Q10. Which of these packages contains all the event handling interfaces?
a. java.lang
b. java.awt
c. java.awt.event
d. java.event

Assignment

1. Write suitable code to develop a 2D Flip-Flop Array with dimension 5 × 5, which replaces all input elements with values 0 by 1 and 1 by 0. An example is shown below:
INPUT:
               00001
               00001
               00001
               00001
               00001
OUTPUT:
               11110
               11110
               11110
               11110
               11110

Solution:

char original[][]= new char[5][5];
for(int line=0;line<5; line++)
{
    String input = sc.nextLine();
    char seq[] = input.toCharArray();
    if(seq.length==5)
    {
        for(int i=0;i<5;i++)
        {
            if(seq[i]=='0' || seq[i]=='1')
            {
                original[line][i]=seq[i];
                if(line==4 && i==4)
                flipflop(original);
            }
            else
            {
                System.out.print("Only 0 and 1 supported.");
                break;
            }
        }
    }
    else
    {
        System.out.print("Invalid length");
        break;
    }
}
}
static void flipflop(char[][] flip)
{
    for(int i=0; i<5;i++)
    {
        for(int j=0; j<5;j++)
        {
            if(flip[i][j]=='1')
            flip[i][j]='0';
            else
            flip[i][j]='1';
        }
    }
    for(int i=0; i<5;i++)
    {
        for(int j=0; j<5;j++)
        {
            System.out.print(flip[i][j]);
        }
        System.out.println();
    }

2. A program needs to be developed which can mirror reflect any 5 × 5 2D character array into its side-by-side reflection. Write suitable code to achieve this transformation as shown below:
 INPUT:                                       OUTPUT:
               OOXOO                                        OOXOO
               OOXOO                                        OOXOO
               XXXOO                                        OOXXX
               OOOOO                                        OOOOO
               XOABC                                        CBAOX

Solution:

char original[][]= new char[5][5];
char reflection[][]= new char[5][5];
for(int line=0;line<5; line++)
{
    String input = sc.nextLine();
    char seq[] = input.toCharArray();
    if(seq.length==5)
    {
        for(int i=0;i<5;i++)
        {
            original[line][i]=seq[i];
        }
    }
}
for(int i=0; i<5;i++)
{
    for(int j=0; j<5;j++)
    {
        reflection[i][j]=original[i][4-j];
    }
}
for(int i=0; i<5;i++)
{
    for(int j=0; j<5;j++)
    {
        System.out.print(reflection[i][j]);
    }
    System.out.println();
}

3. Complete the code to perform a 45 degree anti clock wise rotation with respect to the center of a 5 × 5 2D Array as shown below:
INPUT:
              00100
              00100
              11111
              00100
              00100
OUTPUT:
              10001
              01010
              00100
            01010
              10001

Solution:

char arr[][]= new char[5][5];
for(int line=0;line<5; line++)
{
    String input = sc.nextLine();
    char seq[] = input.toCharArray();
    if(seq.length==5)
    {
        for(int i=0;i<5;i++)
        {
            arr[line][i]=seq[i];
        }
    }
    else
    {
        System.out.print("Wrong Input!");
        System.exit(0);
    }
}
char tra[][] = new char[5][5];
String outer[]={"00","10","20","30",
"40","41","42","43",
"44","34","24","14",
"04","03","02","01"};
String inner[]={"11","21","31","32",
"33","23","13","12"};
for(int i=0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        for(int k=0; k<outer.length; k++)
        {
            char indices[]=outer[k].toCharArray();
            int a = Integer.parseInt(String.valueOf(indices[0]));
            int b = Integer.parseInt(String.valueOf(indices[1]));
            if(a==i && b==j)
            {
                if(k==15)
                {
                    k=1;
                }
                else if(k==14)
                {
                    k=0;
                }
                else
                {
                    k+=2;
                }
                indices=outer[k].toCharArray();
                a = Integer.parseInt(String.valueOf(indices[0]));
                b = Integer.parseInt(String.valueOf(indices[1]));
                tra[a][b] = arr[i][j];
                break;
            }
        }
        for(int k=0; k<inner.length; k++)
        {
            char indices[]=inner[k].toCharArray();
            int a = Integer.parseInt(String.valueOf(indices[0]));
            int b = Integer.parseInt(String.valueOf(indices[1]));
            if(a==i && b==j)
            {
                if(k==7)
                {
                    k=0;
                }
                else
                {
                    k+=1;
                }
                indices=inner[k].toCharArray();
                a = Integer.parseInt(String.valueOf(indices[0]));
                b = Integer.parseInt(String.valueOf(indices[1]));
                tra[a][b] = arr[i][j];
                break;
            }
        }
        tra[2][2] = arr[2][2];
    }
}
for(int i=0;i<5;i++)
{
    for(int j=0;j<5;j++)
    {
        System.out.print(tra[i][j]);
    }
    System.out.println();
} 

4. Complete the code to develop an ADVANCED CALCULATOR that emulates all the functions of the GUI Calculator as shown in the image.

Note the following points carefully:
1. Use only double datatype to store all numeric values.
2. Each button on the calculator should be operated by typing the characters from ‘a’ to ‘p’.
3. To calculate 25-6, User should input fjhkc (where, f for 2, j for 5, h for ‘-‘, k for 6 and c for ‘=’ ).
3. You may use the already defined function gui_map(char).
4. Without ‘=’, operations won’t give output as shown in Input_2 and Output_2 example below.
5. The calculator should be able to perform required operations on two operands as shown in the below example:
Input_1:
                   klgc
Output_1:
                        18.0

Solution:

char seq[] = input.toCharArray();
int outflag=0;
for(int i=0; i<seq.length; i++)
{
    seq[i]=gui_map(seq[i]);
}
double operand1=0.0;
String o1="";
double operand2=0.0;
String o2="";
double output=0.0;
outerloop:
for(int i=0; i<seq.length; i++)
{
    int r=0;
    if(seq[i]=='+'||seq[i]=='-'||seq[i]=='/'||seq[i]=='X'||seq[i]=='=')
    {
        for(int j=0; j<i; j++)
        {
            o1+=Character.toString(seq[j]);
        }
        operand1=Double.parseDouble(o1);
        for(int k=i+1; k<seq.length; k++)
        {
            if(seq[k]=='=')
            {
                outflag=1;
                operand2=Double.parseDouble(o2);
                if(seq[i]=='+')
                {
                    output=operand1+operand2;
                }
                else if(seq[i]=='-')
                {
                    output=operand1-operand2;
                }
                else if(seq[i]=='/')
                {
                    output=operand1/operand2;
                }
                else if(seq[i]=='X')
                {
                    output=operand1*operand2;
                }
                break outerloop;
            }
            else
            {
                o2+=Character.toString(seq[k]);
            }
        }
    }
}
if(outflag==1)
System.out.print(output);

5. Complete the code to develop a BASIC CALCULATOR that can perform operations like Addition, Subtraction, Multiplication and Division.
Note the following points carefully:
1. Use only double datatype to store calculated numeric values.
2. Assume input to be of integer datatype.
3. The output should be rounded using Math.round() method.
4. Take care of the spaces during formatting output (e.g., single space each before and after =).
5. The calculator should be able to perform required operations on a minimum of two operands as shown in the below example:
Input:
                       5+6 
Output:
                       5+6 = 11

Solution:

int i=0;
int j=0;
double output=0;
char seq[] = input.toCharArray();
for(int a=0; a<seq.length; a++)
{
    if(seq[a]=='+')
    {
        i= Integer.parseInt(input.substring(0,a));
        j= Integer.parseInt(input.substring(a+1,seq.length));
        output = (double)i+j;
    }
    else if(seq[a]=='-')
    {
        i= Integer.parseInt(input.substring(0,a));
        j= Integer.parseInt(input.substring(a+1,seq.length));
        output = (double)i-j;
    }
    else if(seq[a]=='/')
    {
        i= Integer.parseInt(input.substring(0,a));
        j= Integer.parseInt(input.substring(a+1,seq.length));
        output = (double)i/j;
    }
    else if(seq[a]=='*')
    {
        i= Integer.parseInt(input.substring(0,a));
        j= Integer.parseInt(input.substring(a+1,seq.length));
        output = (double)i*j;
    }
}
System.out.print(input+" = " + Math.round(output));


* The material and content uploaded on this website are for general information and reference purposes only and don’t copy the answers of this website to any other domain without any permission or else copyright abuse will be in action.

Please do it by your own first!

DMCA.com Protection Status

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
close button
0
Would love your thoughts, please comment.x
()
x