Utilizzo del riferimento

di Anonimizzato27523 il
5 risposte
Salve, non riesco a capire perche' il riferimento "panino" non ha valore all'interno dell if scelta 2 mentre posso usarlo tranquillamente nell if scelta 1

public void esegui(){
		int scelta = schermoMenu();
		while(true){
			if(scelta == 0 ){
				System.out.println("Arrivederci!");
				break;
			}else if(scelta == 1){
				Panino panino = this.leggiDati();
				System.out.println("Valore : " + panino);
			}else if(scelta == 2){
				this.stampaDati(panino);   --> ****** qui si trova l'errore
			}else if(scelta == 3){
				
			}else if(scelta == 4){

			}
			scelta = schermoMenu();
		}
	}

	private void stampaDati(Panino panino){
		System.out.println("Valore : " + panino);
	}

	private Panino leggiDati(){
		System.out.println("Inserici i dati del panino -->");
		System.out.println("Inserisci il codice ");
		String codice = this.leggiStringaNonVuota();
		System.out.println("Inserisci il nome ");
		String nomePanino = this.leggiStringaNonVuota();
		System.out.println("Inserisci il prezzo ");
		int prezzo = this.leggiInteroPositivo();
		Panino panino = new Panino(codice, nomePanino, prezzo);
		System.out.println("Da quanti ingredienti e' composto il panino?  -->");
                int numeroIngredienti = this.leggiInteroPositivo();
		for(int i = 0; i < numeroIngredienti; i++){
			System.out.println("Inserisci i dati dell'ingrediente numero: " + (i + 1));
			Ingrediente ingrediente = this.leggiIngrediente();
			panino.aggiungiIngrediente(ingrediente);
		}
		System.out.println(panino.toString());
		return panino;
	}
ERRORE --> Principale.java:20: error: cannot find symbol this.stampaDati(panino);

5 Risposte

  • Forse perché panino lo dichiari proprio dentro all'if 1? Non dovresti dichiararlo da un'altra parte?
  • Weierstrass ha scritto:


    Forse perché panino lo dichiari proprio dentro all'if 1? Non dovresti dichiararlo da un'altra parte?
    L'ho dichiarato all'interno dell' if 1 per poterlo passare al metodo "stampadati" che dovrebbe fare la stampa dell'oggetto panino. Altrimenti non so come farla in un metodo separato piuttosto che dopo l'acquisizione dei dati.
  • Panino la devi dichiarare fuori dal while
  • Manusbruzzolo ha scritto:


    L'ho dichiarato all'interno dell' if 1 per poterlo passare al metodo "stampadati" che dovrebbe fare la stampa dell'oggetto panino. ....
    Ma così esiste solo in quella if... se lo dichiari prima, come consigliato, puoi utilizzarlo senza problemi...
  • oregon ha scritto:


    Manusbruzzolo ha scritto:


    L'ho dichiarato all'interno dell' if 1 per poterlo passare al metodo "stampadati" che dovrebbe fare la stampa dell'oggetto panino. ....
    Ma così esiste solo in quella if... se lo dichiari prima, come consigliato, puoi utilizzarlo senza problemi...
    Ho fatto come mi avete consigliato ma il riferimento panino nell' if 2 continua ad essere indefinito
    
    public void esegui(){
    		int scelta = schermoMenu();
    		Panino panino ;
    		while(true){
    			if(scelta == 0 ){
    				System.out.println("Arrivederci!");
    				break;
    			}else if(scelta == 1){
    				panino = this.leggiDati();
    				System.out.println("Valore : " + panino);
    			}else if(scelta == 2){
    				this.stampaDati(panino);
    			}else if(scelta == 3){
    				
    			}else if(scelta == 4){
    
    			}
    			scelta = schermoMenu();
    		}
    	}
    
Devi accedere o registrarti per scrivere nel forum
5 risposte