Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [java] Problemi con gli iteratori

    Ciao a tutti. Sto scrivendo un programma, per esercitarmi in vista di una prova in università, in cui ho una classe Body che fa da interfaccia per le sue sottoclassi Planet, Star e Moon.
    Per la definizione delle tre classi nessun problema, ma mi sono sorti i problemi nel momento in cui devo definire un iteratore per permettere all'utente che utilizza la classe di stampare quali corpi ruotano attorno all'oggetto da cui creo l'iteratore. Nel caso che stavo provando a implementare, volevo creare un'iteratore personalizzato che ho chiamato SatelliteIterator e che faccia stampare tutti i pianeti che girano attorno a una stella. Le specifiche che mi sono state date prevedono che l'utente esterno possa creare un'iteratore richiamando da main semplicemente con
    Iterator x=body.satelliteIterator();
    per cui ho definito un metodo che crea l'iteratore internamente e lo restituisce al programma chiamante.
    La classe che definisce l'iteratore l'ho inserita all'interno della classe Star.
    Ora questo iteratore SatelliteIterator, dovrebbe agire su una LinkedList contenente tutti i pianeti che girano intorno alla stella, quindi gestendo un iteratore della lista.
    Il problema è che nel costruttore di SatelliteIterator, il compilatore non rileva la lista "satelliti".

    Qualcuno può aiutarmi a capire cosa sbaglio?
    Ho paura di non aver ben chiaro come usare gli iteratori.
    ciao a tutti e grazie mille.
    codice:
    package planets;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    
    public class Star implements Body{
    	private String name;
    	private double mass;
    	private LinkedList satelliti;
    	
    	private class SatelliteIterator implements Iterator{
    		private Iterator listIterator;
    		
    		SatelliteIterator()
    		{
    			listIterator=new satelliti.iterator(); //Qui mi da errore in compilazione
    		}
    		public boolean hasNext()
    		{
    			return !satelliti.isEmpty();
    		}
    		
    		public void remove()
    		{
    		}
    		
    		public Object next()
    		{
    			if (listIterator.hasNext())
    			{
    				return listIterator.next();
    			}
    			return null;
    		}
    	}
    	
    	//Costruttore per la classe Star
    	public Star(String name,double mass)
    	{
    		this.name=name;
    		this.mass=mass;
    		satelliti=new LinkedList();
    	}
    	//Restituisce la massa della stella
    	public double getMass()
    	{
    		return mass;
    	}
    	
    	//Restituisce il nome della stella
    	public String getName()
    	{
    		return name;
    	}
    	
    	void addSatellite(Body x)
    	{
    		if (x instanceof Planet)
    			satelliti.add(x);
    	}
    	
    	
    	public Iterator satelliteIterator()
    	{
    		return new SatelliteIterator();
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    togli il new, stelliti non è un package

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 © 2024 vBulletin Solutions, Inc. All rights reserved.