/*
CIS 790             PROGRAMMING PROJECT (36)     PROF. AUCIELLO

       ASSIGNMENT:  SHOW OFF YOUR PROGRAMMING SKILLS BY
                    CONVERTING AN  APPLICATION 
                    TO         AN  APPLET.


========================================================================

APPLET CREATES THIS OUTPUT:
        
(srr) Index Pointer = 0 Contents = Hello World!
(srr) Index Pointer = 1 Contents = Demos loops, arrays, printing from arrays.
(srr) Index Pointer = 2 Contents = I hope this is worth it ...
(srr) Index Pointer = 3 Contents = End of String Array.  Starting Numeric Array.

1 2 3 5 8 13 21 -- stored internally
numbers printed out from array.
(arr) Index Pointer = 0 Contents = 1
(arr) Index Pointer = 1 Contents = 2
(arr) Index Pointer = 2 Contents = 3
(arr) Index Pointer = 3 Contents = 5
(arr) Index Pointer = 4 Contents = 8
(arr) Index Pointer = 5 Contents = 13
(arr) Index Pointer = 6 Contents = 21
Control goes here only when an error is 'caught'!
Index = 7 is Out of Range

=================================================================


// -- THIS IS THE APPLICATION --
//    THIS RUNS AS A JAVA APPLICATION.
import java.io.*;
class x21 
{ public static void main (String args[])
  { int i;
    int arr[] = {1,2,3,5,8,13,21};   // 5:
    String srr[] = {"Hello World!",
                    "Demos loops, arrays, printing from arrays.",
                    "I hope  this is worth it ...",
                    "END OF STRING ARRAY. START NUMERIC ARRAY."
                   } 
 
    for (i = 0; i < 4; i++)          // 11:
        { System.out.println("Index Pointer = " + i + "  Contents =  " + srr[i]); }
    System.out.println("1 2 3 5 8 13 21 -- stored internally");
    System.out.println("numbers printed out from array.");

 try {
    for (i = 0; i < 8; i++)
        { System.out.println("Index Pointer = " + i + "  Contents = " + arr[i]); }
    System.out.println("Very, very cool! ");
    }   

 catch (Exception e) {
    System.out.println("Control goes here only when an error is 'caught'!");
    System.out.println("Index = " + i + " is Out of Range"); 
                     }  // end catch
  }  // end main
}  // end class
// -- END OF JAVA APPLICATION --


// =============================================================


// -- START OF JAVA APPLET --
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
import java.awt.Image.*;
import java.lang.Double;
import java.lang.Integer;
import java.lang.Math;
import java.lang.String;
import java.util.Date;
import java.util.Random;
import java.util.*; 
import java.io.*;

public class a38 extends Applet
{ // all definitions and initializations can go here.
   StringBuffer saveinfo = new StringBuffer(); 
   Font font2 = new Font("TimesRoman", Font.ITALIC, 20);
   Font font3 = new Font("Helvetica", Font.BOLD, 20);
   Font font5 = new Font("Symbol", Font.BOLD, 20);

   // add new initialization statements:
   TextField inputField0,inputField1,inputField2,inputField3;
   Button button1;                         // ...... button.
   int i = 1, n1, n2, ver = 140;

   double dintrate, monthlyInterest, payment, principal, y,y2;
             // defines variable textFields
             // 'awt' (abstract windows toolkit) contains 
             // components, such as:  Buttons, Text Fields, etc.
   // end of new statements.


   public void start()
     { 
       inputField0      = new TextField(80);// create, add, and
       add (inputField0);                   // initialize input field1.
       inputField0.setText("    LOAN    ANALYZER         JAVA  APPLET  PROGRAMMING  (CIS  790)              PROF.  J.  AUCIELLO");
       Label namelabel4 = new Label("Mortgage Amount",Label.RIGHT);
       add (namelabel4);                    // def and add label.
       inputField1      = new TextField(7); // create, add, and
       add (inputField1);                   // initialize input field1.
       inputField1.setText("250000");
       System.out.println("done entering .. about to click start");
       button1          = new Button("Start");  // def button.
       add(button1);  
     }  // end start()

   public void paint(Graphics g)
     { Font fonts   = new Font("Helvetica",Font.BOLD,12);
       g.setFont(fonts);
       g.drawString("(no commas)",39,65);
       g.setColor(new Color(25,25,245));  // base color
      
       try
          {
            String s1 = inputField1.getText();
                                  
            principal  = Integer.parseInt(s1);
            int years  = Integer.parseInt(s2);
            dintrate   = Double.valueOf(inputField3.getText()).doubleValue(); 
            dintrate = dintrate/100;
            y = dintrate;
            i = 0;
            monthlyInterest = y / 12;
            System.out.println("p= " + principal + " mi=" + monthlyInterest);
            payment = principal * monthlyInterest /
                      (1-(Math.pow((1/(1 + monthlyInterest)),years*12)));
            System.out.println     ("y= "+y+" payment = "+ payment +" in paint() ... about to calculate"); 
            double y1 = (Math.round(y*1000000));
                   y2 =  y1/10000;
            double y3 = (Math.round(y*1000000)) / 10000;
            g.drawString("At rate " + y2+ " %, your payment is $"+Math.round(payment),20,ver+20);
            System.out.println     ("y= "+y+" resetting y .. done calculating.");
            y = dintrate - 0.01;
            i = 1;
            System.out.println     ("was y reset? y= "+y+"i= "+i);
          } // end try
         
       catch (Exception e)                                    
           { String err = e.toString();
             g.drawString("In Error-Trapping Routine. ",320,160);
             g.drawString(" Check Divide by 0 Error ",320,180);
             g.drawString(" " + err,320,200);
         }  // end catch 
     }  // end paint()
}  // end class

//  ===================== END   OF  APPLET ===========================


/*
CLUES FOR SUCCESS:

    1. NOTE THE STRUCTURE OF THE APPLET:
       import

       public class name
        {
          definitions / initializations

          public void start() method  (this can be eliminated -- not needed.)

          public void paint (Graphics g)
            {
              set up fonts and color  (g.setColor)

              try 
                {
                  print two "for" loops.   (take from APPLICATION)
                } // end try 

              catch
                {
                  statements to capture and print error. 
                                           (take from APPLICATION)
                }  // end catch
            }  // end paint method
        }  // end class
 

// =========================================================

    THE COMPLETED EXECUTABLE APPLET IS BELOW 
    USE IT TO CHECK YOUR PROGRESS.

// APPLICATION CONVERTED TO APPLET!
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.Graphics;
import java.awt.Font;
import java.awt.Color;
import java.awt.Image.*;
import java.lang.Double;
import java.lang.Integer;
import java.lang.Math;
import java.lang.String;
import java.util.Date;
import java.util.Random;
import java.util.*;
import java.io.*;

public class c2 extends Applet
{  Font fonts   = new Font("Helvetica",Font.BOLD,12);
   int i;
   int arr[] = {1,2,3,5,8,13,21};   // 5:
   String[] srr = {"Hello World!",
                   "Demos loops, arrays, printing from arrays.",
                   "I hope this is worth it ...",
                   "End of String Array.  Starting Numeric Array." };
 
   public void paint(Graphics g)
     { // begin paint method
       try { g.setFont(fonts);
             g.setColor(new Color(25,25,245));  // base color
             g.drawString("APPLET RUNNING!",39,65);
             g.drawString("Minimize this screen to see Output!",39,95);

             for ( i = 0; i < 4; i++)          // 11:
                 { System.out.println("(srr) Index Pointer = " + i + " Contents = " + srr[i]);
                 }
             System.out.println("1 2 3 5 8 13 21 -- stored internally");
             System.out.println("numbers printed out from array.");
             for (i = 0; i < 8; i++)
                 { System.out.println("(arr) Index Pointer = " + i + " Contents = " + arr[i]);
                 }
                   System.out.println("Very, very cool! ");   // 17:
           }  // end try

       catch (Exception e) 
          {
            System.out.println("Control goes here only when an error is 'caught'!");
            System.out.println("Index = " + i + " is Out of Range"); 
          } // end catch
     } // end paint
} // end class



//  ===================== END   OF  APPLET  ===========================


Note to students:  you must interact with these programs to fully
understand them.  Download the code, make changes, and track the
results.  By Planning-Doing-Testing-Verifying, you will gain critically
important programming skills that will speed your ability to program.
JA.  06.08.99

*/