Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Input e uso di Generics

    Ciao a tt... ho il seguente problema da risolvere...
    Io ho questa classe di cui vi copio il codice.

    import java.util.*;

    public class Calculator
    {
    private double result;
    private double precision = 0.0001;

    public static void main(String[] args)
    {
    Calculator clerk = new Calculator( );

    try
    {
    System.out.println("Calculator is on.");
    System.out.print("Format of each line: ");
    System.out.println("operator space number");
    System.out.println("For example: + 3");
    System.out.println("To end, enter the letter e.");
    clerk.doCalculation( );
    }
    catch(UnknownOpException e)
    {
    clerk.handleUnknownOpException(e);
    }
    catch(DivideByZeroException e)
    {
    clerk.handleDivideByZeroException(e);
    }
    System.out.println("The final result is "+ clerk.resultValue( ));
    System.out.println("Calculator program ending.");
    }

    public Calculator( )
    {
    result = 0;
    }

    public void reset( )
    {
    result = 0;
    }

    public void setResult(double newResult)
    {
    result = newResult;
    }

    public double resultValue( )
    {
    return result;
    }

    public void doCalculation( ) throws DivideByZeroException,UnknownOpException
    {
    char nextOp;
    double nextNumber;
    Scanner keyboard = new Scanner(System.in);

    boolean done = false;
    result = 0;
    System.out.println("result = " + result);
    while (! done)
    {
    nextOp = (keyboard.next( )).charAt(0);
    if ((nextOp == 'e') || (nextOp == 'E'))
    done = true;
    else
    {
    nextNumber = keyboard.nextDouble( );
    result = evaluate(nextOp, result, nextNumber);
    System.out.println("result " + nextOp + " "+ nextNumber + " = " + result);
    System.out.println("updated result = " + result);
    }
    }
    }

    public double evaluate(char op, double n1, double n2)
    throws DivideByZeroException, UnknownOpException
    {
    double answer;
    switch (op)
    {
    case '+':
    answer = n1 + n2;
    break;
    case '-':
    answer = n1 - n2;
    break;
    case '*':
    answer = n1 * n2;
    break;
    case '/':
    if ( (-precision < n2) && (n2 < precision))
    throw new DivideByZeroException( );
    answer = n1/n2;
    break;
    default:
    throw new UnknownOpException(op);
    }
    return answer;
    }

    public void handleDivideByZeroException(DivideByZeroException e)
    {
    System.out.println("Dividing by zero.");
    System.out.println("Program aborted");
    System.exit(0);
    }

    public void handleUnknownOpException(UnknownOpException e)
    {
    System.out.println(e.getMessage( ));
    System.out.println("Try again from the beginning:");

    try
    {
    System.out.print("Format of each line: ");
    System.out.println("operator number");
    System.out.println("For example: + 3");
    System.out.println("To end, enter the letter e.");
    doCalculation( );
    }
    catch(UnknownOpException e2) // il nome e era gia' stato usato
    {
    System.out.println(e2.getMessage( ));
    System.out.println("Try again at some other time.");
    System.out.println("Program ending.");
    System.exit(0);
    }
    catch(DivideByZeroException e3)
    {
    handleDivideByZeroException(e3);
    }
    }
    }


    Il mio obbiettivo è di renderla generica per parametri di tipo Double o Integer o Long o Float.
    E la variabile di ritorno, result deve essere dello stesso tipo del parametro in ingresso.

    La prima modifica che ho apportato è stata quella di mettere come dati input il tipo generico <N extends Number>
    Il problema ke mi sn trovato ad affrontare è la gestione dell' input poichè la classe java.util.Scanner non mi permette di leggere dei Number.
    Il mio approccio per la risoluzione del problema è giusto o dovrei cercare altre vie per la risoluzione?
    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao stevemaster,

    questo è il forum di JavaScript (scripting lato client)
    ti conviene postare nel forum JAVA
    o aspettare che qualche buon moderatore ti sposti

  3. #3
    azz..me ne sn accorto adesso...kiedo scusa al mod in anticipo...

  4. #4
    Prova a vedere se questo link può tornarti utile

    Al mio segnale... scatenate l'inferno!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.