Problema java

di il
1 risposte

Problema java

Ciao a tutti, sono alle prime armi con java, e cercando di fare un magazzino che contiene prodotti, ricevo parecchi errori, non di scrittura ma di funzionamento
Uno che si nota subito è che, al momento della stampa, vengono stampati i valori di default; qui i codici:

PRODOTTO
package prodotto;
import java.util.*;
/**
 *
 * @author Francesco
 */
class Prodotto {
   
    private Vector prodotti;
    String descrizione; int codice; int quantita; int minimo; String unitamisura; float prezzo;
    
    public Prodotto (String descrizione, int codice, int quantita, int minimo, String unitamisura, float prezzo)
            {
                this.descrizione=descrizione;
                this.codice=codice;
                this.quantita=quantita;
                this.minimo=minimo;
                this.unitamisura=unitamisura;
                this.prezzo=prezzo;
                prodotti = new Vector ();
            }
            
    public void push(Object obj)
    {
        prodotti.addElement(obj);
    }
    public Object pop()
    {
        Object obj = null;
        int size = prodotti.size();
        
        if (size>0)
        {
            obj=prodotti.elementAt(size-1);
            prodotti.removeElementAt(size-1);
        }
        return obj;
    }
    public Object top()
    {
        Object obj=null;
        int size = prodotti.size();
        
        if (size>0)
        {
            obj=prodotti.elementAt(size-1);
        }
        return obj;
    }
    public int size ()
    {
        return prodotti.size();
    }
    public void Visualizza( )
            {
            System.out.println(" Descrizione " + descrizione );
            System.out.println(" Quantita "+ quantita);
            System.out.println(" Codice "+ codice ) ;
            System.out.println(" quantitaminima "+minimo );
            System.out.println(" Prezzo "+ prezzo );
            System.out.println(" Unita di misura "+unitamisura) ;    
             
            }
    
    
    }
MAGAZZINO (main)
package prodotto;
import java.io.*;
import java.util.*;
/**
 *
 * @author Francesco
 */
class Magazzino {
    public static void main (String args []) throws IOException
    {
        InputStreamReader input = new InputStreamReader (System.in);
        BufferedReader tastiera = new BufferedReader (input);
        String descrizione=" "; 
        int codice=0; 
        int quantita=0; 
        int minimo=0; 
        String unitamisura=" "; 
        float prezzo=0;
        int risposta=0;
        Prodotto p= new Prodotto (descrizione,codice,quantita,minimo,unitamisura,prezzo);
               
        
        
        //Inserimento descrizione e resto
        while( true )
     {
         
        System.out.println( " \t Benvenuto nel programma della gestione del magazzino ");
        System.out.println(" \t 1) Inserisci nuovo prodotto");
        System.out.println(" \t 2) Visulizzare i dati del prodotto dato il codice ");
        System.out.println(" \t 3) Visualizzare spesa preventiva  ");
        System.out.println(" \t 4) Visualizzare valore della merce complessiva in magazzino");
        System.out.println(" \t 5) Visualziza intero magazzino ");

     try
     {
         String NumeroLetto= tastiera.readLine();
         risposta= Integer.valueOf(NumeroLetto).intValue();
         
     }
     catch(Exception e)
     {
         System.out.println(" Errore ");
         
     }
     
     switch(risposta)
       {
         case 1: 
                 Prodotto c= new Prodotto (descrizione,codice,quantita,minimo,unitamisura,prezzo);
                 p.push(c);
                 System.out.println("Descrizione: ");
                 descrizione=tastiera.readLine();
                 System.out.println("Codice: ");
                 String numeroLetto = tastiera.readLine();
                 codice = Integer.valueOf(numeroLetto).intValue();
                 System.out.println("Quantita': ");
                 String b = tastiera.readLine();
                 quantita = Integer.valueOf(b).intValue();
                 System.out.println("Minimo: ");
                 String f = tastiera.readLine();
                 minimo = Integer.valueOf(f).intValue();
                 System.out.println("Unita' di misura: ");
                 unitamisura = tastiera.readLine();
                 System.out.println("Prezzo: ");
                 String d = tastiera.readLine();
                 prezzo = Float.valueOf(d).floatValue();
                 break;
         case 2: 
                System.out.println("Inserisci codice da ricercare: ");
                String j = tastiera.readLine();
                int size= p.size();
                for (int i=0;i<size; i++)
                {
                    if (j.equals(p.codice))
                    {
                        p.Visualizza();
                    }
                    else    
                        System.out.println("Codice non trovato ");
                }
                break;
         case 3:
                System.out.println("Spesa per rifornire: ");
                int size1= p.size();
                float spesa=0;
                for (int i1=0;i1<size1;i1++)
                {
                    if(p.quantita<p.minimo)
                        spesa=spesa+prezzo;
                    else
                        System.out.println("Magazzino già rifornito");
                    
                }
                break;
         case 4:
                System.out.println("Valore totale ");
                int size2=p.size();
                float valoreTot=0;
                for (int iVal=0;iVal<size2;iVal++)
                {
                    valoreTot=valoreTot+p.prezzo;
                }
                break;
         
                
                
         case 5:   p.Visualizza();
        }        
    }
 }
}

1 Risposte

  • Re: Problema java

    Luis123, non ho letto tutto tutto il tuo codice (solo per motivi di tempo ora) ma una cosa mi è saltata subito all'occhio: la tua classe Prodotto NON va affatto bene, poiché ha due responsabilità ben distinte, ovvero modellare 1 prodotto E gestire n altri prodotti. Dal punto di vista Object Oriented non va molto bene. Inoltre hai comunque tipizzato tutto con Object (push riceve Object, top restituisce Object, ecc...) quindi molto vago e poco tipizzato.

    Se (e ripeto se) accetti il mio consiglio: fai una classe Prodotto che modella soltanto 1 prodotto e basta, fai una classe Magazzino che modella solo un insieme di prodotti (e con i metodi corretti dal punto di vista della tipizzazione, usa per la collezione anche i "generics" se li conosci) e poi un'altra classe es. GestioneMagazzino con il main e tutto l'input/output verso l'utente che vuoi.
Devi accedere o registrarti per scrivere nel forum
1 risposte