Java MCQ Number 01072

Java MCQ Set 1

1. Which of these events is generated when the size os an event is changed?
a) ComponentEvent
b) ContainerEvent
c) FocusEvent
d) InputEvent

Answer

Answer: a [Reason:] A ComponentEvent is generated when the size, position or visibility of a component is changed.

2. Which of these events is generated when the component is added or removed?
a) ComponentEvent
b) ContainerEvent
c) FocusEvent
d) InputEvent

Answer

Answer: b [Reason:] A ContainerEvent is generated when a component is added to or removed from a container. It has two integer constants COMPONENT_ADDED & COMPONENT_REMOVED.

3. Which of these methods can be used to obtain the reference to the container that generated a ContainerEvent?
a) getContainer()
b) getContainerCommand()
c) getActionEvent()
d) getContainerEvent()

Answer

Answer: d [Reason:] None.

4. Which of these methods can be used to get reference to a component that was removed from a container?
a) getComponent()
b) getchild()
c) getContainerComponent()
d) getComponentChild()

Answer

Answer: b [Reason:] The getChild() method returns a reference to the component that was added to or removed from the container.

5. Which of these are integer constants of ComponentEvent class?
a) COMPONENT_HIDDEN
b) COMPONENT_MOVED
c) COMPONENT_RESIZE
d) All of the mentioned

Answer

Answer: d [Reason:] The component event class defines 4 constants COMPONENT_HIDDEN, COMPONENT-MOVED, COMPONENT-RESIZE and COMPONENT-SHOWN.

6. Which of these events is generated when computer gains or losses input focus?
a) ComponentEvent
b) ContainerEvent
c) FocusEvent
d) InputEvent

Answer

Answer: c [Reason:] None.

7. FocusEvent is subclass of which of these classes?
a) ComponentEvent
b) ContainerEvent
c) ItemEvent
d) InputEvent

Answer

Answer: a [Reason:] None.

8. Which of these methods can be used to know the type of focus change?
a) typeFocus()
b) typeEventFocus()
c) isTemporary()
d) isPermanent()

Answer

Answer: c [Reason:] There are two types of focus events – permanent and temporary. The isTemporary() method indicates if this focus change is temporary, it returns a Boolean value.

9. Which of these events will be notified if scroll bar is manipulated?
a) ActionEvent
b) ComponentEvent
c) AdjustmentEvent
d) WindowEvent

Answer

Answer: c [Reason:] AdjustmentEvent is generated when a scroll bar is manipulated.

10. Which of these is superclass of ContainerEvent class?
a) WindowEvent
b) ComponentEvent
c) ItemEvent
d) InputEvent

Answer

Answer: b [Reason:] ContainerEvent is superclass of ContainerEvent, FocusEvent, KeyEvent, MouseEvent and WindowEvent.

Java MCQ Set 2

1. Which of these selection statements test only for equality?
a) if
b) switch
c) if & switch
d) none of the mentioned

Answer

Answer: b [Reason:] Switch statements checks for equality between the controlling variable and its constant cases.

2. Which of these are selection statements in Java?
a) if()
b) for()
c) continue
d) break

Answer

Answer:a [Reason:] Continue and break are jump statements, and for is an looping statement.

3. Which of the following loops will execute the body of loop even when condition controlling the loop is initially false?
a) do-while
b) while
c) for
d) none of the mentioned

Answer

Answer: a [Reason:] None.

4. Which of these jump statements can skip processing remainder of code in its body for a particular iteration?
a) break
b) return
c) exit
d) continue

Answer

Answer: d [Reason:] None.

5. Which of these statement is incorrect?
a) switch statement is more efficient than a set of nested ifs
b) two case constants in the same switch can have identical values
c) switch statement can only test for equality, whereas if statement can evaluate any type of boolean expression
d) it is possible to create a nested switch statements

Answer

Answer: b [Reason:] No two case constants in the same switch can have identical values.

6. What is the output of this program?

  1.     class selection_statements 
  2.     {
  3.         public static void main(String args[])
  4.         {
  5.             int var1 = 5; 
  6.             int var2 = 6;
  7.             if ((var2 = 1) == var1)
  8.                 System.out.print(var2);
  9.             else 
  10.                 System.out.print(++var2);
  11.         } 
  12.     }

a) 1
b) 2
c) 3
d) 4

Answer

Answer:b [Reason:] var2 is initialised to 1. The conditional statement returns false and the else part gets executed.
output:
$ javac selection_statements.java
$ java selection_statements
2

7. What is the output of this program?

  1.     class comma_operator 
  2.     {
  3.         public static void main(String args[]) 
  4.         {    
  5.              int sum = 0;
  6.              for (int i = 0, j = 0; i < 5 & j < 5; ++i, j = i + 1)
  7.                  sum += i;
  8.  	     System.out.println(sum);
  9.         } 
  10.     }

a) 5
b) 6
c) 14
d) compilation error

Answer

Answer: b [Reason:] Using comma operator , we can include more than one statement in the initialization and iteration portion of the for loop. Therefore both ++i and j = i + 1 is executed i gets the value – 0,1,2,3,4 & j gets the values -0,1,2,3,4,5.
output:
$ javac comma_operator.java
$ java comma_operator
6

8. What is the output of this program?

  1.     class jump_statments 
  2.     {
  3.         public static void main(String args[]) 
  4.         {        
  5.              int x = 2;
  6.              int y = 0;
  7.              for ( ; y < 10; ++y) 
  8.              {
  9.                  if (y % x == 0) 
  10.                      continue;  
  11.                  else if (y == 8)
  12.                       break;
  13.                  else
  14.                     System.out.print(y + " ");
  15.              }
  16.         } 
  17.     }

a) 1 3 5 7
b) 2 4 6 8
c) 1 3 5 7 9
d) 1 2 3 4 5 6 7 8 9

Answer

Answer:c [Reason:] Whenever y is divisible by x remainder body of loop is skipped by continue statement, therefore if condition y == 8 is never true as when y is 8, remainder body of loop is skipped by continue statements of first if. Control comes to print statement only in cases when y is odd.
output:
$ javac jump_statments.java
$ java jump_statments
1 3 5 7 9

9. What is the output of this program?

  1. class Output 
  2. {
  3.         public static void main(String args[]) 
  4.         {    
  5.            final int a=10,b=20;
  6.           while(a<b)
  7.           {
  8.  
  9.           System.out.println("Hello");
  10.           }
  11.           System.out.println("World");
  12.  
  13.         } 
  14. }

a) Hello
b) run time error
c) Hello world
d) compile time error

Answer

Answer: d [Reason:] Every final variable is compile time constant.

10. What is the output of this program?

  1.     class Output 
  2.     {
  3.         public static void main(String args[]) 
  4.         {    
  5.              int a = 5;
  6.              int b = 10;
  7.              first: 
  8.              {
  9.                 second: 
  10.                 {
  11.                    third: 
  12.                    { 
  13.                        if (a ==  b >> 1)
  14.                            break second;
  15.                    }
  16.                    System.out.println(a);
  17.                 }
  18.                 System.out.println(b);
  19.              }
  20.         } 
  21.     }

a) 5 10
b) 10 5
c) 5
d) 10

Answer

Answer: d [Reason:] b >> 1 in if returns 5 which is equal to a i:e 5, therefore body of if is executed and block second is exited. Control goes to end of the block second executing the last print statement, printing 10.
output:
$ javac Output.java
$ java Output
10

Java MCQ Set 3

1. Which of these package is used for graphical user interface?
a) java.applet
b) java.awt
c) java.awt.image
d) java.io

Answer

Answer: b [Reason:] java.awt provides capabilities for graphical user interface.

2. Which of these package is used for analyzing code during run-time?
a) java.applet
b) java.awt
c) java.io
d) java.lang.reflect

Answer

Answer: d [Reason:] Reflection is the ability of a software to analyze itself. This is provided by java.lang.reflevt package.

3. Which of these package is used for handling security related issues in a program?
a) java.security
b) java.lang.security
c) java.awt.image
d) java.io.security

Answer

Answer: a [Reason:] java.security handles certificates, keys, digests, signatures, and other security functions.

4. Which of these class allows us to get real time data about private and protected member of a class?
a) java.io
b) GetInformation
c) ReflectPermission
d) MembersPermission

Answer

Answer: c [Reason:] The ReflectPermission class allows reflection of a private or protected members of a class. This was added after java 2.0 .

5. Which of these package is used for invoking a method remotely?
a) java.rmi
b) java.awt
c) java.util
d) java.applet

Answer

Answer: a [Reason:] java.rmi provides capabilities for remote method invocation.

6. Which of these package is used for all the text related modifications?
a) java.text
b) java.awt
c) java.lang.text
d) java.text.mofify

Answer

Answer: a [Reason:] java.text provides capabilities for formatting, searching and manipulating text.

7. What is the output of this program?

  1.     import java.lang.reflect.*;
  2.     class Additional_packages
  3.     {	 
  4.          public static void main(String args[])
  5.          {
  6. 	     try
  7.              {
  8. 	         Class c = Class.forName("java.awt.Dimension");
  9. 		 Constructor constructors[] = c.getConstructors();
  10. 		 for (int i = 0; i < constructors.length; i++)
  11. 		     System.out.println(constructors[i]);
  12. 	     }
  13. 	     catch (Exception e)
  14.              {
  15.                    System.out.print("Exception");
  16.              }
  17.         }
  18.     }

a) Program prints all the constructors of ‘java.awt.Dimension’ package
b) Program prints all the possible constructors of class ‘Class’
c) Program prints “Exception”
d) Runtime Error

Answer

Answer: a [Reason:] None.
Output:
$ javac Additional_packages.java
$ java Additional_packages
public java.awt.Dimension(java.awt.Dimension)
public java.awt.Dimension()
public java.awt.Dimension(int,int)

8. What is the output of this program?

  1.     import java.lang.reflect.*;
  2.     class Additional_packages
  3.     {	 
  4.          public static void main(String args[]) 
  5.          {
  6. 	     try
  7.              {
  8. 	         Class c = Class.forName("java.awt.Dimension");
  9. 		 Field fields[] = c.getFields();
  10. 		 for (int i = 0; i < fields.length; i++)
  11. 		     System.out.println(fields[i]);
  12. 	     }
  13. 	     catch (Exception e)
  14.              {
  15.                    System.out.print("Exception");
  16.              }
  17.         }
  18.     }

a) Program prints all the constructors of ‘java.awt.Dimension’ package
b) Program prints all the methods of ‘java.awt.Dimension’ package
c) Program prints all the data members of ‘java.awt.Dimension’ package
d) program prints all the methods and data member of ‘java.awt.Dimension’ package

Answer

Answer: c [Reason:] None.
Output:
$ javac Additional_packages.java
$ java Additional_packages
public int java.awt.Dimension.width
public int java.awt.Dimension.height

9. What is the length of the application box made by this program?

  1.     import java.awt.*;
  2.     import java.applet.*;
  3.     public class myapplet extends Applet
  4.     {
  5.         Graphic g;
  6.         g.drawString("A Simple Applet",20,20);    
  7.     }

a) 20
b) Default value
c) Compilation Error
d) Runtime Error

Answer

Answer: c [Reason:] To implement the method drawString we need first need to define abstract method of AWT that is paint() method. Without paint() method we cannot define and use drawString or any Graphic class methods.

10. What is the output of this program?

  1.     import java.lang.reflect.*;
  2.     class Additional_packages 
  3.     {	 
  4.          public static void main(String args[]) 
  5.          {
  6. 	     try
  7.              {
  8. 	         Class c = Class.forName("java.awt.Dimension");
  9. 		 Method methods[] = c.getMethods();
  10. 		 for (int i = 0; i < methods.length; i++)
  11. 		     System.out.println(methods[i]);
  12. 	     }
  13. 	     catch (Exception e)
  14.              {
  15.                  System.out.print("Exception");
  16.              }
  17.         }
  18.     }

a) Program prints all the constructors of ‘java.awt.Dimension’ package
b) Program prints all the methods of ‘java.awt.Dimension’ package
c) Program prints all the data members of ‘java.awt.Dimension’ package
d) program prints all the methods and data member of ‘java.awt.Dimension’ package

Answer

Answer: b [Reason:] None.
Output:
$ javac Additional_packages.java
$ java Additional_packages
public int java.awt.Dimension.hashCode()
public boolean java.awt.Dimension.equals(java.lang.Object)
public java.lang.String java.awt.Dimension.toString()
public java.awt.Dimension java.awt.Dimension.getSize()
public void java.awt.Dimension.setSize(double,double)
public void java.awt.Dimension.setSize(int,int)
public void java.awt.Dimension.setSize(java.awt.Dimension)
public double java.awt.Dimension.getHeight()
public double java.awt.Dimension.getWidth()
public java.lang.Object java.awt.geom.Dimension2D.clone()
public void java.awt.geom.Dimension2D.setSize(java.awt.geom.Dimension2D)
public final native java.lang.Class java.lang.Object.getClass()
public final native void java.lang.Object.notify()
public final native void java.lang.Object.notifyAll()
public final native void java.lang.Object.wait(long)
public final void java.lang.Object.wait(long,int)
public final void java.lang.Object.wait()

Java MCQ Set 4

1. Which of these classes is used to define exceptions?
a) Exception
b) Trowable
c) Abstract
d) System

Answer

Answer: a [Reason:] None.

2. Which of these methods return description of an exception?
a) getException()
b) getMessage()
c) obtainDescription()
d) obtainException()

Answer

Answer: b [Reason:] getMessage() returns a description of the exception.

3. Which of these methods is used to print stack trace?
a) obtainStackTrace()
b) printStackTrace()
c) getStackTrace()
d) displayStackTrace()

Answer

Answer: b [Reason:] None.

4. Which of these methods return localized description of an exception?
a) getLocalizedMessage()
b) getMessage()
c) obtainLocalizedMessage()
d) printLocalizedMessage()

Answer

Answer: a [Reason:] None.

5. Which of these classes is super class of Exception class?
a) Throwable
b) System
c) RunTime
d) Class

Answer

Answer: a [Reason:] None.

6. What is the output of this program?

  1.     class Myexception extends Exception 
  2.     {
  3. int detail;
  4.         Myexception(int a)
  5.         {
  6.             detail = a;
  7. }
  8. public String toString()
  9.         {
  10. 	    return "detail";
  11. }
  12.     }
  13.     class Output 
  14.     {
  15.         static void compute (int a) throws Myexception 
  16.         {
  17. 	     throw new Myexception(a);	 
  18. }
  19. public static void main(String args[]) 
  20.         {
  21.             try
  22.             {
  23.                 compute(3);
  24.             }
  25.            catch(Myexception e)
  26.            {
  27.                System.out.print("Exception");
  28.            } 
  29.         }
  30.     }

a) 3
b) Exception
c) Runtime Error
d) Compilation Error

Answer

Answer: b [Reason:] Myexception is self defined exception.
Output:
$ javac Output.java
java Output
Exception

7. What is the output of this program?

  1.     class Myexception extends Exception 
  2.     {
  3. int detail;
  4.         Myexception(int a) 
  5.         {
  6.         detail = a;
  7. }
  8. public String toString() 
  9.         {
  10. 	    return "detail";
  11. }
  12.     }
  13.     class Output 
  14.     {
  15.         static void compute (int a) throws Myexception
  16.         {
  17. 	     throw new Myexception(a);	 
  18. }
  19. public static void main(String args[]) 
  20.         {
  21.             try 
  22.             {
  23.                 compute(3);
  24.             }
  25.            catch(DevideByZeroException e)
  26.            {
  27.                System.out.print("Exception");
  28.            } 
  29.         }
  30.     }

a) 3
b) Exception
c) Runtime Error
d) Compilation Error

Answer

Answer: c [Reason:] Mexception is self defined exception, we are generating Myexception but catching DevideByZeroException which causes error.
Output:
$ javac Output.javac

8. What is the output of this program?

  1.     class exception_handling 
  2.     {
  3.         public static void main(String args[])
  4.         {
  5.             try 
  6.             {
  7.                 throw new NullPointerException ("Hello");
  8.                 System.out.print("A");
  9.             }
  10.             catch(ArithmeticException e) 
  11.             {
  12.         System.out.print("B");        
  13.             }
  14.         }
  15.     }

a) A
b) B
c) Compilation Error
d) Runtime Error

Answer

Answer: d [Reason:] try block is throwing NullPointerException but the catch block is used to counter Arithmetic Exception. Hence NullPointerException occurs since no catch is there which can handle it, runtime error occurs.
Output:
$ javac exception_handling.java
$ java exception_handling
Exception in thread “main” java.lang.NullPointerException: Hello

9. What is the output of this program?

  1.     class Myexception extends Exception 
  2.     {
  3. int detail;
  4.         Myexception(int a)
  5.         {
  6.         detail = a;
  7. }
  8. public String toString()
  9.         {
  10. 	    return "detail";
  11. }
  12.     }
  13.     class Output
  14.     {
  15.         static void compute (int a) throws Myexception
  16.         {
  17. 	     throw new Myexception(a);	 
  18. }
  19. public static void main(String args[])
  20.         {
  21.             try 
  22.             {
  23.                 compute(3);
  24.             }
  25.            catch(Exception e)
  26.            {
  27.                System.out.print("Exception");
  28.            } 
  29.         }
  30.     }

a) 3
b) Exception
c) Runtime Error
d) Compilation Error

Answer

Answer: b [Reason:] Myexception is self defined exception.
Output:
$ javac Output.javac
java Output
Exception

10. What is the output of this program?

  1.     class exception_handling
  2.     {
  3.         public static void main(String args[])
  4.         {
  5.             try 
  6.             {
  7.                 int a = args.length;
  8.                 int b = 10 / a;
  9.                 System.out.print(a);
  10.                 try 
  11.                 {
  12.                      if (a == 1)
  13.                          a = a / a - a;
  14.                      if (a == 2)
  15.                      {
  16.                          int c = {1};
  17.                          c[8] = 9;
  18.                      }
  19.                 }
  20.                 catch (ArrayIndexOutOfBoundException e)
  21.                 {
  22.                     System.out.println("TypeA");
  23.                 }
  24.                 catch (ArithmeticException e)
  25.                 {
  26.                     System.out.println("TypeB");
  27.                 }
  28.             }
  29.         }
  30.     }

a) TypeA
b) TypeB
c) Compilation Error
d) Runtime Error
Note : Execution commandline : $ java exception_handling one

Answer

Answer: c [Reason:] try without catch or finally
Output:
$ javac exception_handling.java
$ java exception_handling
error: ‘try’ without ‘catch’, ‘finally’ or resource declarations

Java MCQ Set 5

1. Which of these keywords are used to implement synchronization?
a) sunchronize
b) syn
c) synch
d) synchronized

Answer

Answer: d [Reason:] None.

2. Which of these method is used to avoid polling in Java?
a) wait()
b) notify()
c) notifyAll()
d) all of the mentioned

Answer

Answer: d [Reason:] Polling is a usually implemented by looping in CPU is wastes CPU’s time, one thread being executed depends on other thread output and the other thread depends on the response on the data given to the first thread. In such situation CPU’s time is wasted, in Java this is avoided by using methods wait(), notify() and notifyAll().

3. Which of these method is used to tell the calling thread to give up monitor and go to sleep until some other thread enters the same monitor?
a) wait()
b) notify()
c) notifyAll()
d) sleep()

Answer

Answer: a [Reason:] wait() method is used to tell the calling thread to give up monitor and go to sleep until some other thread enters the same monitor. This helps in avoiding polling and minimizes CPU’s idle time.

4. Which of these method wakes up the first thread that called wait()?
a) wake()
b) notify()
c) start()
d) notifyAll()

Answer

Answer: b [Reason:] None.

5. Which of these method wakes up all the threads?
a) wakeAll()
b) notify()
c) start()
d) notifyAll()

Answer

Answer: d [Reason:] notifyAll() wakes up all the threads that called wait() on the same object. The highest priority thread will run first.

6. What is synchronization in reference to a thread?
a) Its a process of handling situations when two or more threads need access to a shared resource
b) Its a process by which many thread are able to access same shared resource simultaneously
c) Its a process by which a method is able to access many different threads simultaneously
d) Its a method that allow to many threads to access any information the require

Answer

Answer: a [Reason:] When two or more threads need to access the same shared resource, they need some way to ensure that the resource will be used by only one thread at a time, the process by which this is achieved is called synchronization

7. What is the output of this program?

  1.     class newthread extends Thread
  2.     {
  3. Thread t;
  4. String name;
  5. 	newthread(String threadname)
  6.         {
  7. 	    name = threadname;
  8. 	    t = new Thread(this,name);
  9. 	    t.start();
  10. }
  11. public void run()
  12.         {
  13.         }
  14.  
  15.     }
  16.     class multithreaded_programing
  17.     {
  18.         public static void main(String args[])
  19.         {
  20. 	    newthread obj1 = 	 new newthread("one");
  21. 	    newthread obj2 =	 new newthread("two");
  22.             try
  23.             {
  24.                 obj1.t.wait();
  25.                 System.out.print(obj1.t.isAlive());
  26.             }
  27.             catch(Exception e)
  28.             {
  29. 	    System.out.print("Main thread interrupted");
  30.             }
  31.         }
  32.     }

a) true
b) false
c) Main thread interrupted
d) None of the mentioned

Answer

Answer: c [Reason:] obj1.t.wait() causes main thread to go out of processing in sleep state hence causes exception and “Main thread interrupted” is printed.
Output:
$ javac multithreaded_programing.java
$ java multithreaded_programing
Main thread interrupted

8. What is the output of this program?

  1.     class newthread extends Thread
  2.     {
  3. Thread t;
  4. String name;
  5. 	newthread(String threadname)
  6.         {
  7. 	    name = threadname;
  8. 	    t = new Thread(this,name);
  9. 	    t.start();
  10. }
  11. public void run()
  12.         {
  13.         }
  14.  
  15.     }
  16.     class multithreaded_programing
  17.     {
  18.         public static void main(String args[])
  19.         {
  20. 	    newthread obj1 = 	 new newthread("one");
  21. 	    newthread obj2 =	 new newthread("two");
  22.             try
  23.             {
  24.                 Thread.sleep(1000);
  25.                 System.out.print(obj1.t.isAlive());
  26.             }
  27.             catch(InterruptedException e)
  28.             {
  29. 	    System.out.print("Main thread interrupted");
  30.             }
  31.         }
  32.     }

a) true
b) false
c) Main thread interrupted
d) None of the mentioned

Answer

Answer: b [Reason:] Thread.sleep(1000) has caused all the threads to be suspended for some time, hence onj1.t.isAlive() returns false.
Output:
$ javac multithreaded_programing.java
$ java multithreaded_programing
false

9. What is the output of this program?

  1.     class newthread extends Thread
  2.     {
  3. Thread t;
  4. String name;
  5. 	newthread(String threadname)
  6.         {
  7. 	    name = threadname;
  8. 	    t = new Thread(this,name);
  9. 	    t.start();
  10. }
  11. public void run()
  12.         {
  13.         }
  14.  
  15.     }
  16.     class multithreaded_programing
  17.     {
  18.         public static void main(String args[])
  19.         {
  20. 	    newthread obj1 = 	 new newthread("one");
  21. 	    newthread obj2 =	 new newthread("two");
  22.             try
  23.             {
  24.                  System.out.print(obj1.t.equals(obj2.t));
  25.             }
  26.             catch(Exception e)
  27.             {
  28. 	    System.out.print("Main thread interrupted");
  29.             }
  30.         }
  31.     }

a) true
b) false
c) Main thread interrupted
d) None of the mentioned

Answer

Answer: b [Reason:] Both obj1 and obj2 have threads with different name that is “one” and “two” hence obj1.t.equals(obj2.t) returns false.
Output:
$ javac multithreaded_programing.java
$ java multithreaded_programing
false

10. What is the output of this program?

  1.     class newthread extends Thread
  2.     {
  3. Thread t;
  4. 	newthread()
  5.         {
  6. 	    t1 = new Thread(this,"Thread_1");
  7. 	    t2 = new Thread(this,"Thread_2");
  8. 	    t1.start();
  9. 	    t2.start();
  10. }
  11. public void run()
  12.         {
  13. 	    t2.setPriority(Thread.MAX_PRIORITY);
  14. 	    System.out.print(t1.equals(t2));
  15.         }    
  16.     }
  17.     class multithreaded_programing
  18.     {
  19.         public static void main(String args[])
  20.         {
  21.             new newthread();        
  22.         }
  23.     }

a) true
b) false
c) truetrue
d) falsefalse

Answer

Answer: d [Reason:] This program was previously done by using Runnable interface, here we have used Thread class. This shows both the method are equivalent, we can use any of them to create a thread.
Output:
$ javac multithreaded_programing.java
$ java multithreaded_programing
falsefalse

ed010d383e1f191bdb025d5985cc03fc?s=120&d=mm&r=g

DistPub Team

Distance Publisher (DistPub.com) provide project writing help from year 2007 and provide writing and editing help to hundreds student every year.