codice:Si realizzi una classe che implementa l'interfaccia GenericNumber (descritta nella pagina seguente) e che sia in grado di manipolare numeri generici (numeri interi e numeri in virgola mobile). Trattare i numeri in virgola mobile come dei Double. In seguito si realizzi un programma Java, attraverso il metodo main() della stessa classe, che prenda in input un file di testo contenente, per ogni riga, un'espressione aritmetica e restituisca i risultati di tali espressioni in un file di output (i calcoli dovranno essere effettuati utilizzando la nuova classe che implementa GenericNumber). Input Il file di input contiene una sequenza di espressioni aritmetiche, una per ogni riga. Il primo valore di ogni riga rappresenta il numero di operandi presenti nell'espressione. Ogni espressione aritmetica coinvolge non pił di 10 operandi. Gli operatori sulla sinistra hanno prioritą rispetto agli operatori sulla destra, quindi l'espressione 3 + 4 5 * 7 3 č da interpretarsi come (((3 + 4) 5) * 7) 3. Ogni espressione puņ contenere sia numeri interi che numeri in virgola mobile. Il file di output contiene i risultati delle espressioni aritmetiche presenti nel file di input, uno per ogni riga. All'inizio di ogni riga č presente una stringa, tra parentesi tonde, che indica se il risultato č un integer (integer) o un floating point (floating)
Ecco l'interfaccia
Ora il fatto che ci siano isInteger e Double e il fatto che si parli di oggetti mi porta a pensare che si debbano usare variabili boxed, o sbaglio?codice:public interface GenericNumber { // ritorna true se il valore dell'oggetto č un intero public boolean isInteger(); // ritorna true se il valore č un numero in virgola mobile public boolean isFloating(); // assegna all'oggetto un valore intero pari a i public void setValue(int i); // assegna all'oggetto un valore in virgola mobile pari a d public void setValue(double d); // ritorna il valore delloggetto, se č in virgola mobile, // ritorna 0 altrimenti public double getFloatingValue(); // ritorna il valore dell'oggetto, se č un intero, 0 altrimenti public int getIntValue(); // confronta il valore dell'oggetto // con il valore del numero generico x public boolean equals(GenericNumber x); // effettua la moltiplicazione con il numero generico x // ritorna l'oggetto stesso public GenericNumber mul(GenericNumber x); // divide il valore dell'oggetto per un numero generico x // ritorna l'oggetto stesso public GenericNumber div(GenericNumber x); // effettua l'addizione con il numero generico x // ritorna l'oggetto stesso public GenericNumber add(GenericNumber x); // sottrae al valore dell'oggetto il numero generico x // ritorna l'oggetto stesso public GenericNumber min(GenericNumber x); // converte il valore dell'oggetto in una stringa public String toString(); }
Il mio problema č, quando creo la classe che implementa l'interfaccia, avrņ un oggetto che di per se come parametro avrą un valore, o Int, o Double.
Come faccio io nel costruttore a inserire questo parametro dato che non posso specificare se č int o double a priori?
Cioč in un costruttore si avrebbe una cosa cosģ:
Molto facilmente, ma qui cosa passo come parametro?codice:int numero; String colore; public Pennarello(int numero, String colore) { ... }
Non credo funzioni...codice:public class NumeroGenerico implements GenericNumber { private GenericNumber value; public NumeroGenerico(GenericNumber value) { this.value=value; }

Rispondi quotando

