Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313

    design pattern - iterator

    ciao, ho una matrice bidimensionale e questo é il file di esempio:

    codice:
    import matrix.Matrix;
    
    public class MatrixTest {
    
    	public static void main(String[] args) {
    		int rows = 2;
    		int columns = 3;
    		Matrix matrix = new Matrix(rows, columns);
    		for (int i=0; i<rows;i++) {
    			for (int j=0; j<columns; j++) {
    				matrix.putItem(i, j , (String.valueOf(i)) + "-" + (String.valueOf(j)));
    			}
    		}
    	
    		//TODO: Add your code here
                    //qui aggiungo il richiamo all'iterator
    
    	
    	}
    
    }
    qui devo aggiungere il codice necessario per creare l'iterator in modo da ottenere il seguente risultato quando eseguo il file MatrixTest.java ->

    0-0 0-1 0-2 1-0 1-1 1-2 (praticamente devo percorre l'array col sistema "Row-Column).

    codice di Matrix.java:

    codice:
    	
    package matrix;
    import iterator.Iterable;
    import iterator.Iterator;
    
    public class Matrix implements Iterable {
    	
    	private int rows, columns;
    	private Object mat[][];
    	
    	public Matrix(int rows, int columns) {
    		this.rows = rows;
    		this.columns = columns;
    		
    		mat = new Object[rows][columns];
    	}
    	
    	public int getRows() {
    		return rows;
    	}
    	
    	public int getColumns() {
    		return columns;
    	}
    	
    	
    	public Object getItem(int r, int c) {
    		return mat[r][c];
    	}
    	
    	public void putItem(int r, int c, Object o) {
    		mat[r][c] = o;
    	}
    
    	public Iterator createIterator() {
                    TODO: add you code here
    		return null;
    	}
    
    }
    ma non ho capito come fare... help???
    alcool: la causa e la soluzione di tutti i problemi

  2. #2
    Simpatico esercizio.
    Io l'ho fatto cosi':

    codice:
     
    import matrix.Matrix;
    
    public class MatrixTest {
        
        public static void main(String[] args) {
            int rows = 2;
            int columns = 3;
            Matrix matrix = new Matrix(rows, columns);
            for (int i=0; i<rows;i++) {
                for (int j=0; j<columns; j++) {
                    matrix.putItem(i, j , (String.valueOf(i)) + "-" + (String.valueOf(j)));
                }
            }
            
            // Questo lo puoi fare solo in JDK 1.5 - Con 1.4 innesta i for come sopra
            for (Object o : matrix) {
                System.out.println(o);
            }
            
            //TODO: Add your code here
            //qui aggiungo il richiamo all'iterator
            
            
        }
        
    }
    codice:
     
    
    package matrix;
    import java.util.Iterator;
    import java.util.NoSuchElementException;
    
    public class Matrix implements Iterable {
        
        private int rows, columns;
        private Object mat[][];
        
        public Matrix(int rows, int columns) {
            this.rows = rows;
            this.columns = columns;
            
            mat = new Object[rows][columns];
        }
        
        public int getRows() {
            return rows;
        }
        
        public int getColumns() {
            return columns;
        }
        
        
        public Object getItem(int r, int c) {
            return mat[r][c];
        }
        
        public void putItem(int r, int c, Object o) {
            mat[r][c] = o;
        }
        
        //    public Iterator createIterator() {
        //    }
        
        public Iterator<Object> iterator() {
            return new MatrixIterator();
        }
        
        public class MatrixIterator implements Iterator<Object> {
            
            int a;
            int b;
            
            public MatrixIterator() {
                a = 0;
                b = -1;
            }
            
            public void remove() {
                // Non ha senso rimuovere un elemento da una matrice!
                throw new UnsupportedOperationException("Tried to remove an element from a matrix!");
            }
            
            public Object next() {
                if (!hasNext())
                    throw new NoSuchElementException();
                b++;
                //            b%=mat[a].length;
                if (b==mat[a].length) {
                    b=0;
                    a++;
                }
                return mat[a][b];
            }
            
            public boolean hasNext() {
                return ((a<mat.length-1)||(b<mat[a].length-1));
            }
            
        }
        
    }
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,295
    Il linguaggio va sempre specificato anche nel titolo della discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di Gumble
    Registrato dal
    Jun 2004
    Messaggi
    1,313
    grazie mille per l'aiuto...





    scusa mod... la prox almeno lo so!
    alcool: la causa e la soluzione di tutti i problemi

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.