/*
 * MainCalc.java
 *
 * Created on 24 febbraio 2004, 14.45
 */
package Calc;
/**
 *
 * @author  stfn
 */
public class MainCalc {
    
    /** Creates a new instance of MainCalc */
    public MainCalc() {
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //Modo1();
        Modo2();
    }
    private static void Modo1(){
        //dichiarazione ed allocazione di memoria per la classe Calc
        Calc c=new Calc();
        //dichiarazione ed allocazione della classe che effettua
        //la lettura dallo standard input
        ScanKey sk=new ScanKey();
        ScanOperatore sop=new ScanOperatore();
        ScanDouble sd=new ScanDouble();
        //variabile che governa lo stato del loop di input da s.i.
        boolean ancora=true;
        do{
            //input primo operando
            System.out.print("Inserisci il primo operando :");
            String uno=sd.readLine();
            //test per la continuazione dell'input
            if(sd.test()){
                //?????????aggiungere test per operando errato ???????????
                c.Set(Float.parseFloat(uno));
                //input operatore
                String oper=sop.get("Inserisci l'operatore :", "Operatore errato: vuoi continuare ? (S/N) :");
                //??????aggiungere test per input operatore errato????????
                //input secondo operando
                System.out.print("Inserisci il secondo operando : ");
                String due=sd.readLine();
                if(sd.test()){
                    if(oper.startsWith("/") || oper.startsWith(":")){
                        c.Divide(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("*")){
                        c.Multiply(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("+")){
                        c.Sum(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("-")){
                        c.Subtract(Float.parseFloat(due));
                    }
                    //stampa risultato
                    System.out.print("Risultato : ");
                    c.Print();
                }
            }
            else
                //imposta la variabile ancora per fare terminare il loop di lettura da s.i.
                ancora=false;
        }while(ancora);
    }
    private static void Modo2(){
        //dichiarazione ed allocazione di memoria per la classe Calc
        Calc c=new Calc();
        //dichiarazione ed allocazione della classe che effettua
        //la lettura dallo standard input
        ScanKey sk=new ScanKey();
        ScanOperatore sop=new ScanOperatore();
        ScanDouble sd=new ScanDouble();
        //variabile che governa lo stato del loop di input da s.i.
        boolean ancora=true;
        //input primo operando
        System.out.print("Inserisci un operando :");
        String uno=sd.readLine();
        //test per la continuazione dell'input
        if(sd.test()){
            c.Set(Float.parseFloat(uno));
            do{
                String oper=sop.get("Inserisci l'operatore :", "Operatore errato: vuoi continuare ? (S/N) :");
                //??????aggiungere test per input operatore errato????????
                //input secondo operando
                System.out.print("Inserisci l' operando : ");
                String due=sd.readLine();
                if(sd.test()){
                    if(oper.startsWith("/") || oper.startsWith("/")){
                        c.Divide(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("*")){
                        c.Multiply(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("+")){
                        c.Sum(Float.parseFloat(due));
                    }
                    else if(oper.startsWith("-")){
                        c.Subtract(Float.parseFloat(due));
                    }
                    //stampa risultato
                    System.out.print("Risultato : ");
                    c.Print();
                }
                else
                    //imposta la variabile ancora per fare terminare il loop di lettura da s.i.
                    ancora=false;
            }while(ancora);
        }
    }
}
