Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88

    [JAVA] Passaggio array tra metodi

    Salve a tutti il mio problema è che non riesco passare il valore dell'array da un metodo crealista a un metodo mostra lista poichè cmq ho intenzione di dare la dim dell'array da tastiera. Il codice è questo , non riesco a implementare il metodo mostra lista creando un for che mi cicli l'array e me lo mostri poichè non vede giustamente l'array ogg...

    codice:
    package esame;
    import java.util.*;
    class Oggetto{
        private String nome_prodotto="";
        private String tipologia="";
        private int costo=0;
        void Oggetto(){}
          public void setNomeprodotto(String nomeProdotto){
         		this.nome_prodotto=nomeProdotto;
        }
          public String getNomeprodotto(){
    		return this.nome_prodotto;
     	}
          public void setTipologia(String tipolog){
         		this.tipologia=tipolog;
        }
          public String getTipologia(){
    		return this.tipologia;
     	}
          public void setCosto(int cost){
         		this.costo=cost;
        }
          public int getCosto(){
    		return this.costo;
     	}
         }
    
    class Lista{
        
        public void lista(){    
                  
                   Scanner scanner=new Scanner(System.in);
                   System.out.println("Quanti prodotti inserire nel catalogo");
                   int dim=scanner.nextInt();
                   Oggetto ogg[] = new Oggetto[dim];
                   
                   Oggetto oggetti = new Oggetto();
                   
                   for(int i=0;i<ogg.length;i++){
                   System.out.println("Inserisci nome prodotto");
                   String s=scanner.next();
                   oggetti.setNomeprodotto(s);
                   System.out.println("Inserisci tipologia");
                   String t=scanner.next();
                   oggetti.setTipologia(t);
                   System.out.println("Inserisci costo");
                   int sc=scanner.nextInt();
                   oggetti.setCosto(sc);
                   ogg[i]=oggetti;
                   } 
    
        }
        public void  mostralista(){
              
        }
               
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Passaggio array tra metodi

    Originariamente inviato da j_ax31
    non riesco a implementare il metodo mostra lista creando un for che mi cicli l'array e me lo mostri poichè non vede giustamente l'array ogg...
    Qui dovresti chiarire: vuoi che l'array di Oggetto sia un campo di "istanza" nella classe Lista? O in lista vuoi invocare mostraLista? O altro?

    E chi usa Lista? (non si vede)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88

    Re: Re: [JAVA] Passaggio array tra metodi

    Originariamente inviato da andbin
    Qui dovresti chiarire: vuoi che l'array di Oggetto sia un campo di "istanza" nella classe Lista? O in lista vuoi invocare mostraLista? O altro?

    E chi usa Lista? (non si vede)
    Vorrei che l'oggetto fosse un campo di istanza nella classe, ma che la dimensione dell'array venga data in fase di esecuzione tramite la variabile dim.
    Lista viene usata qua:
    codice:
    public class Catalogo {
    
        public static void main(String[] args) {
        Lista list = new Lista();
        list.lista();
        list.mostralista();
        }
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [JAVA] Passaggio array tra metodi

    Originariamente inviato da j_ax31
    Vorrei che l'oggetto fosse un campo di istanza nella classe, ma che la dimensione dell'array venga data in fase di esecuzione tramite la variabile dim.
    Ok, definisci in Lista la variabile di istanza, es.:

    private Oggetto[] arrayOggetti;

    Poi in lista() istanzi l'array usando dim e lo assegni alla variabile di istanza.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    Anche facendo così il metodo mostra lista non vede comunque l'array riempito...
    codice:
    class Lista{
        private Oggetto ogg[];
        public void lista(){    
                  
                   Scanner scanner=new Scanner(System.in);
                   System.out.println("Quanti prodotti inserire nel catalogo");
                   int dim=scanner.nextInt();
                   Oggetto ogg[] = new Oggetto[dim];
                   Oggetto oggetti = new Oggetto();
                   
                   for(int i=0;i<ogg.length;i++){
                   System.out.println("Inserisci nome prodotto");
                   String s=scanner.next();
                   oggetti.setNomeprodotto(s);
                   System.out.println("Inserisci tipologia");
                   String t=scanner.next();
                   oggetti.setTipologia(t);
                   System.out.println("Inserisci costo");
                   int sc=scanner.nextInt();
                   oggetti.setCosto(sc);
                   ogg[i]=oggetti;
                   } 
    
        }
        public void  mostralista(){
              for(int i=0;i<ogg.length;i++){
                   System.out.println("Nome "+ogg[i].getNomeprodotto());
                   System.out.println("Tipo "+ogg[i].getTipologia());
                   System.out.println("Costo "+ogg[i].getCosto());
    
    
              }
        }
               
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da j_ax31
    codice:
    class Lista{
        private Oggetto ogg[];
        public void lista(){    
                  
                   Oggetto ogg[] = new Oggetto[dim];
    Hai definito una variabile locale .... non stai assegnando al campo di istanza!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    Perfetto ho risolto =) Grazie mille.
    L'unico problema adesso devo capire perchè stampa solo l'ultimo valore immesso tipo così:
    codice:
    Quanti prodotti inserire nel catalogo
    2
    Inserisci nome prodotto
    1
    Inserisci tipologia
    1
    Inserisci costo
    1
    Inserisci nome prodotto
    2
    Inserisci tipologia
    2
    Inserisci costo
    2
    Nome 2
    Nome 2
    Nome 2
    Nome 2
    Nome 2
    Nome 2

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da j_ax31
    L'unico problema adesso devo capire perchè stampa solo l'ultimo valore immesso tipo così:
    Non ho controllato prima lista() ma l'ho fatto adesso in base a quanto hai appena detto.
    Ed è il classico errore che si fa "agli inizi" (non ti preoccupare):

    codice:
                   Oggetto oggetti = new Oggetto();
                   
                   for(int i=0;i<ogg.length;i++){
    La istanziazione di Oggetto è fuori dal ciclo, quindi ne hai sempre e solo 1. Nell'array avrai più riferimenti ma allo stesso oggetto, che conterrà l'ultima cosa inserita.

    (soluzione: istanzia un nuovo Oggetto nel ciclo)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    Grandissimo grazie milleeeeee! Funziona sei stato gentilissimo =)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.