WinstonSmith ha scritto:
Non riesco a capire come far capire alla macchina che il "20" di 1920 lo trova all'indice2 dell'array decina.
Ma hai (ri)letto quello che avevo detto in precedenza? I valori da 1 a 19 (il numero 0 come numero complessivo in ingresso è ancora un caso a sé stante) sono assolutamente speciali e generalmente ha senso avere un array che tiene le stringhe da "zero" fino a "diciannove".
Da 20 in poi (fino a 99) dovresti .... saper "riconoscere" le similitudini e i casi particolari con gli altri 3x, 4x ecc.... 9x.
WinstonSmith ha scritto:
Ho pensato di agire in questo modo:
-classe astratta Prodotto, con attributi marca e prezzo, quindi costruttore ecc
- le tre class snack, bevande, panini con i loro attributi + quelli ereditati.
Va bene classe Prodotto abstract. Vanno pure bene classi Snack, Bevanda e Panino (al singolare, non plurale!) concrete, sottoclassi di Prodotto.
WinstonSmith ha scritto:
- classe distributore, quella col main, dove vado a creare i prodotti. Dichiaro un array di oggetti, quindi Prodotto[] P = new Prodotto[50];
Va bene una classe Distributore ma NON metterci un main. Definiscila solo per rappresentare la logica di gestione del distributore (pensa alle azioni che deve "saper" fare). In questa classe NON devi fare input/output verso l'utente, devi solo contenere la logica di gestione del distributore.
Cosa deve poter fare? Pensaci: es. aggiungere un prodotto, bene metterai un metodo es.
public boolean aggiungiProdotto(Prodotto p) { .... }
Altro? es. quanti prodotti ci sono. Oppure "dammi il prodotto all'indice i-esimo".
La gestione di quell'array (di 50) deve restare interna, non deve trasparire fuori. Se vuoi, se richiesto o comunque non proibito per l'esercitazione, puoi fare in modo che il costruttore riceva il numero massimo di prodotti. Quindi quel 50 non sarebbe cablato fisso in Distributore.
Poi il main() lo metterai in un'altra classe es. ProvaDistributore o EsercizioDistributore o come ti pare.