gestioneMagazzino in java

motocross'88

Nuovo Utente
26 Ott 2009
17
0
0
Ciao a tutti. sono alle prese con un nuovo problema che può essere espresso cosi: L’oggetto Magazzino è caratterizzato come denominazione dall’indicazione della sua ubicazione (Brescia, Como, ...); da una capienza massima e da una capienza minima definite dal collaudatore dell’impianto per il corretto funzionamento. Sul magazzino è possibile fare delle operazioni di carico e scarico che devono rispettare i vincoli strutturali. Non è possibile fare carichi e scarichi parziali. (Es. CapMax=100, CapCor=80 se cerco di caricare 50 non carico solo i 20 che rispettano il vincolo ma scarto completamente l’operazione di carico)….Si vuole realizzare un applicativo gestioneMagazzino che permette la gestione dei magazzini ubicati in due province. Tramite struttura a menu si deve permettere:
1) Inizializzazione magazzini
2) Visualizzazione dati tecnici di entrambi i magazzini
3) Determinazione del magazzino con CapMax maggiore
4) Carico merce (dato il magazzino che si desidera e controllando il buon esito dell’operazione)
5) Scarico merce (dato il magazzino che si desidera e controllando il buon esito dell’operazione)
Ho cominciato con la creazione di due classi (Magazzino e gestioneMagazzino) e adesso sono al punto due (case 2 del menu, perchè il primo funziona) e non so come richiamare i dati che mi interessano, perchè mi da errori del tipo method non-static richiamato da static....qualche suggerimento su come risolvere il problema?
grazie!!!
Codice:
import unibs.eco.dmq.basicIO.*;
public class gestioneMagazzino {
 public static void main(String[] args) {
         int opzione; 
         do{
         	Scrittore.video.println("---------------------");
         	Scrittore.video.println("1* Inizializzazione magazzini");
         	Scrittore.video.println("2* Dati tecnici dei magazzini");
         	Scrittore.video.println("3* Magazzino con CapMax maggiore");
         	Scrittore.video.println("4* Carico merce");
         	Scrittore.video.println("5* Scarico merce");
         	Scrittore.video.println("0* USCITA");
         	Scrittore.video.println("---------------------");
         	opzione=Lettore.tastiera.leggiInt();    
           	switch(opzione){
          		case 1:;
          		Magazzino m1 = new Magazzino("Como",90,10,5); 
          		Magazzino m2 = new Magazzino("Brescia",100,5,20);
          		Scrittore.video.println("I magazzini creati si chiamano");
          		Scrittore.video.println(m1.nome +" e "+ m2.nome);
          		Scrittore.video.println("\n dati tecnici: \n capienza minima e massima del negozio di " +m1.getNome()+" e' "+m1.getcapienzaMin()+ " e "+m1.getcapienzaMax() +" \n capienza minima e massima del negozio di " +m2.getNome()+" e' "+m2.getcapienzaMin()+ " e "+m2.getcapienzaMax());		
           		break;
       		case 2:
       							
          		break;	
		case 3: 
				
          		break;
	}   		
          }while(opzione!=0);
        }
     }

e il Magazzino
Codice:
import unibs.eco.dmq.basicIO.*;  
class Magazzino{
    public String nome;
    public int capienzaMax; 
    public int capienzaMin;
    public int quantitaCorrente;     
    public Magazzino(String nome, int capienzaMax, int capienzaMin,int quantita){
    	this.nome=nome;
    	this.capienzaMax=capienzaMax;
    	this.capienzaMin=capienzaMin;
    	this.quantitaCorrente=quantitaCorrente;
    }    

  public int getcapienzaMax(){ 
  	return capienzaMax;
  }
  public int getcapienzaMin(){ 
  	return capienzaMin;
  }  
  public int getquantitaCorrente() {
   	return quantitaCorrente;
  }
  public void aumentaquantitaCorrente( int q ) {
    quantitaCorrente = quantitaCorrente + q;
  }
  public void diminuisciquantitaCorrente( int q ) {
    quantitaCorrente = quantitaCorrente - q;
  }
  public String getNome() { 
  	return nome;
  }
}
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Il metodo main è statico per cui non puoi istanziare oggetti di tipo Magazzino ed accedere direttamente agli attributi pubblici non statici.
Prova a modificare la classe gestioneMagazzino in questo modo:

Codice:
import unibs.eco.dmq.basicIO.*;
public class gestioneMagazzino {

	public gestioneMagazzino() {
         int opzione; 
         do{
         	Scrittore.video.println("---------------------");
         	Scrittore.video.println("1* Inizializzazione magazzini");
         	Scrittore.video.println("2* Dati tecnici dei magazzini");
         	Scrittore.video.println("3* Magazzino con CapMax maggiore");
         	Scrittore.video.println("4* Carico merce");
         	Scrittore.video.println("5* Scarico merce");
         	Scrittore.video.println("0* USCITA");
         	Scrittore.video.println("---------------------");
         	opzione=Lettore.tastiera.leggiInt();    
           	switch(opzione){
          		case 1:;
          		Magazzino m1 = new Magazzino("Como",90,10,5); 
          		Magazzino m2 = new Magazzino("Brescia",100,5,20);
          		Scrittore.video.println("I magazzini creati si chiamano");
          		Scrittore.video.println(m1.nome +" e "+ m2.nome);
          		Scrittore.video.println("\n dati tecnici: \n capienza minima e massima del negozio di " +m1.getNome()+" e' "+m1.getcapienzaMin()+ " e "+m1.getcapienzaMax() +" \n capienza minima e massima del negozio di " +m2.getNome()+" e' "+m2.getcapienzaMin()+ " e "+m2.getcapienzaMax());		
           		break;
       		case 2:
       							
          		break;	
		case 3: 
				
          		break;
	}   		
          }while(opzione!=0);
	}
	
 public static void main(String[] args) {
 	new gestioneMagazzino();
      }
}

Inoltre, per rispettare lo standard Java i nomi delle classi dovrebbero iniziare com lettere maiuscole (GestioneMagazzino) e non dovresti dichiarare pubblici gli attributi della classe, a meno di particolari necessità. Per cui rendi privati o eventualmente protetti gli attributi della classe Magazzino ed accedi ad essi tramite i rispettivi metodi getter e setter (m2.getNome()).
 

motocross'88

Nuovo Utente
26 Ott 2009
17
0
0
si satifal, ti ho capito...però se voglio mettere una scritta al case2 del tipo Scrittore.video.print(m1.getNome() ); mi dice che la variabile m1 non è stata inizializzata!
ho provato anche a creare una var String nome; la quale la richiamavo cosi semmai nome=m1.getNome(); ma non funge neanche cosi...
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Ovviamente se tenti di accedere all'istanza m1 all'interno del case 2 ti darà errore in quanto l'oggetto viene istanziato nel case 1 il cui codice non viene eseguito.
Per ovviare a questo problema dovresti istanziare gli oggetti fuori dallo switch.
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
L java api_google Javascript 0
F NetBeans problema creazione progetto Java Windows e Software 0
Z [java] bufferizzare stream audio da mic Java 1
L java + Api di google Javascript 1
A [Cerchiamo] [Retribuito/a] "Java Solution Architect" Offerte e Richieste di Lavoro e/o Collaborazione 1
F Script java elenco alfabetico non funziona Javascript 3
C Serializzazione in java Java 1
M AIUTO ESERCIZIO JAVA Javascript 1
M Ripasso Java Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - RETRIBUITO] Sviluppatori JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
L leggere RGB di un pixel dello schermo in java Java 1
I Creazione programmino JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
F Aiuto java script Javascript 2
T [Java] tipi generici con esempio pratico Java 1
J File audio in java Java 0
V [JAVA] come integrare un software scritto in java su una pagina web? Java 4
C Java client / server Java 0
F [OFFRO][RETRIBUITO] PROGRAMMATORE JAVA Offerte e Richieste di Lavoro e/o Collaborazione 0
C [Java] testare un metodo con Junit Java 1
A [Java] caricare un url esterno senza utilizzo di iframe Java 0
S [OFFRO] Debug delle tue applicazioni Java Offerte e Richieste di Lavoro e/o Collaborazione 1
L [Java] Aggiungere elementi ad array JSON Java 0
B [Java] Paginazione in risposta HTTP Java 0
A [Java]Date diminuite di un giorno su db MySQL Java 0
K [Java] aiuto switch case Java 1
P [Java] limite destro di un JFrame Java 5
D [Java] far partire JProgressBar all'apertura di un JFrame Java 1
N [java con eclipse]metodo ricorsivo che accetta in ingresso un char e restituisce un int Java 0
A Verifica validità data in Java Java 2
L [Java] Errore json conversione Java 0
Drago73 [Java] leggere/scrivere txt server Java 0
M [Javascript] Java card Java 0
serena.cerutti posizioni aperte: PhP, Java, .Net Offerte e Richieste di Lavoro e/o Collaborazione 0
N [Java]problema jasper report dopo compilazione file .jar Java 0
N [Java] Piccolo jform per calcolo totale da 2 campi i double Java 0
N [Java] jbutton con funzioni Java 2
M [java] esercizio lunghezza array di stringhe Java 0
A [java] problema esercizio Java 0
filograndipad2 Esempi chiari e completi sul funzionamento degli eventi in Java Java 1
Raziel84 [Java] Combinazione elementi matrice Java 0
A [java] problema esercizio array Java 5
L da php a popup java PHP 2
W Piccolo sistema per gestire alcune periferiche, Java o altro linguaggio? Java 8
S Cerco programmatore java Offerte e Richieste di Lavoro e/o Collaborazione 0
Z [Java] Grassetto assente su font incorporato nel pacchetto jar Java 0
O [Java] Lettura da JSON File Java 0
Z [Java] Caratteri distorti e spaziature errate nelle stampe di componenti swing Java 0
W Aiutino per compilare o eseguire un App Java Java 0
S [JAVA] Geocoding Java Java 0
Andy56 Parametri funzioni in Java Java 0

Discussioni simili