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

    [JAVA] Perchè dà errore ogni volta che nomino FailureException?

    Ciao,
    stò facendo un'esercitazione della professoressa...però tutte le volte che provo a sollevare una Failure Exception in questa classe mi dà errore in fase di compilazione...che sbaglio?
    Altra domanda...a che serve la prima riga: import java.util.*;

    codice:
    import java.util.*;
    
    public class ListaDiInteri{
    	/** OVERIEW: Rappresenta e gestisce liste di interi, è l'implementazione del seguente tipo astratto:
    		V = Z U {<x,n>: x € Z ed n € V} (Z è l'insieme degli interi relativi)
    		O = Insieme degli operatori di lettura, inserimento e cancellazione
    		C = Insieme Vuoto
    		
    		Gli oggetti di tipo ListaDiInteri sono MODIFICABILI */
    		
    	private NodoInt N;			// Variabile di istanza che rappresenta la testa della lista
    	private int quantiNodi;		// Variabile di istanza che rappresenta il numero di nodi presenti nella lista
    	
    	private class ListaIteratore implements Iterator{		// Classe interna per il generatore
    		
    		private NodoInt questo;				// Riferimento al nodo corrente
    		
    		public ListaIteratore(){			// Costruttore
    			questo = N;						// Il nuovo generatore inizialmente punta sempre alla testa della lista
    		}
    		
    		public boolean hasNext(){
    			return questo != null;
    		}
    		
    		public Object next() throws NoSuchElementException{
    			if(questo == null) throw new NoSuchElementException();	// Se il ricevente è l'ultimo nodo, ritorna l'eccezione
    			
    			return new Integer(questo.getValore());	 // Altrimenti incarta il valore in un Integer e restituiscine una copia
    		}
    		
    		public void remove(){
    			if(questo != null) questo = questo.getSuccessivo();	// Elimina l'element dall'iteratore ma non dalla collezione
    		}
    	
    	}
    	
    	/** Metodo osservatore
    		REQUIRES: La collezione non deve essere modificata mentre l'iteratore è in uso
    		@return: Un iteratore degli elementi dell'oggetto ricevente */
    		
    	public Iterator elementi(){
    		return new ListaIteratore();
    	}
    	
    	/** EFFECTS: Crea una lista di interi vuota */
    	
    	public ListaDiInteri(){		// E' il costruttore della classe ListaDiInteri
    		N = null;
    		quantiNodi = 0;
    	}
    	
    	/** EFFECTS: Aggiunge in testa alla lista un nuovo elemento il cui elemento è pari al parametro
    		MODIFIES: this
    		@param: k di tipo int, il valore da aggiungere in testa all'oggetto ricevente */
    		
    	public void aggiungiInTesta(int k){
    		NodoInt Nuovo = new NodoInt(k);		// Crea un nuovo nodo con campo informativo pari a k
    		Nuovo.setSuccessivo(N);				// Fai puntare il nuovo nodo alla lista N
    		N = Nuovo;							// Aggiungi il nuovo nodo in testa;
    		quantiNodi ++;							// Incrementa di 1 il numero dei nodi presenti nella lista
    	}
    	
    	/** EFFECTS: Aggiunge in coda alla lista un nuovo nodo il cui valore intero è pari al parametro
    		MODIFIES: this
    		@param: k di tipo int, il valore da aggiungere in coda all'oggetto ricevente */
    		
    	public void aggiungiInCoda(int k){
    		NodoInt x, nuovo;					// Dichiara due variabili di tipo NodoInt
    		
    		nuovo = new NodoInt(k);				// Crea un nuovo nodo con campo informativo pari a k
    		
    		if(N != null){						// Se la lista N non è vuota
    			x = N;								// Metti in x il riferimento alla testa della lista
    			while(x.getSuccessivo() != null){	// ITERA SULLA LISTA scorrendola fino all'ultimo nodo
    				x = x.getSuccessivo();
    			}
    			x.setSuccessivo(nuovo);				// ed infine AGGIUNGI IN CODA il nuovo nodo
    			quantiNodi ++;						// ed incrementa di 1 il numero di nodi presenti nella lista
    		}
    		
    		else{
    			aggiungiInTesta(k);				// Altrimenti (se la lista era vuota) aggiungi in testa il nuovo nodo
    			quantiNodi ++;						// ed incrementa di 1 il numero di nodi presenti nella lista
    		}
    	}
    	
    	/** EFFECTS: Rimuove l'elemento in testa della lista oggetto ricevente ed espone l'oggetto ricevente a possibili
    		effetti collaterali
    		MODIFIES: this
    		REQUIRES: L'oggetto ricevente deve essere diverso da null
    		@return: Il riferimento all'oggetto di tipo NodoInt in testa alla lista (che viene rimosso dalla lista)
    		@throws: FailureException (Unchecked) */
    		
    	public NodoInt rimuoviDaTesta(){
    		NodoInt testa = N;			// Dichiara una variabile di tipo NodoInt e mettici dentro la testa della lista
    		
    		if(N == null) throw new FailureException();		// Se la lista N è vuota solleva la FailureException
    		
    		N = N.getSuccessivo();		// (altrimenti) metti in N il riferimento al secondo elemento della lista N stessa
    		quantiNodi --;					// Descrementa di 1 il numero di nodi della lista
    		return testa;				// Ritorna al chiamante il riferimento dell'oggetto in testa che è stato eliminato
    	}
    	
    	
    	/** EFFECTS: Rimuove l'elemento in coda della lista oggetto ricevente ed espone l'oggetto ricevente a possibili
    		effetti collaterali
    		MODIFIES: this
    		REQUIRES: L'oggetto ricevente deve essere diverso da null
    		@return: Il riferimento all'oggetto di tipo NodoInt in coda alla lista (che viene rimosso dalla lista)
    		@throws: FailureException (Unchecked) */	
    		
    	public NodoInt rimuoviDaCoda(){
    		NodoInt x, coda;			// Dichiara due variabili di tipo NodoInt
    		
    		if(N == null) throw new FailureException();		// Se la lista N è vuota solleva la FailureException
    		
    		x = N;					// Metti in X il riferimento alla testa della lista
    		
    		if(N.getSuccessivo() == null){		// Se la lista è formata da un solo nodo (la testa è anche la coda)
    			coda = N;						// Metti dento coda il riferimento alla testa della lista
    			N = null;						// Ed elimina la coda rendendo la lista vuota
    		}
    		
    		else{			// Altrimenti scorri la lista fino al penultimo nodo
    			while(x.getSuccessivo() != null && (x.getSuccessivo()).getSuccessivo() != null){
    				x = x.getSuccessivo();		// Metti in x il riferimento al penultimo nodo della lista
    			}
    			coda = x.getSuccessivo();		// Metti in coda il riferimento all'ultimo nodo della lista
    			x.setSuccessivo(null);			// Elimina l'ultimo nodo dalla lista
    		}
    		quantiNodi --;						// Decrementa di 1 il numero di nodi presenti nella lista
    		return coda;						// Ritorna al chiamante il riferimento all'ultimo nodo eliminato dalla lista
    	}
    	
    	/** Metodo osservatore
    		REQUIRES: L'oggetto ricevente deve essere diverso da null
    		@throws: FailureException (unchecked)
    		@return: Il valore dell'elemento in testa alla lista oggetto ricevente */
    	
    	public int getTesta(){
    		if(N == 0) throw new FailureException();
    		return N.getValore();
    	}
    	
    	/** Metodo osservatore
    		REQUIRES: L'oggetto ricevente deve essere diverso da null
    		@throws: FailureException (unchecked)
    		@return: Il valore dell'elemento in coda alla lista oggetto ricevente */
    		
    	public int getCoda(){
    		NodoInt x;				// Dichiaro una variabile x di tipo NodoInt
    		
    		if(N == 0) throw new FailureException();		// Se la lista N è vuota solleva una FailureException
    		
    		x = N;			// (altrimenti) metti in x il riferimento alla testa della lista
    		
    		if(N != null)
    			while(x.getSuccessivo() != null)
    				x = x.getSuccessivo();
    			
    		else getTesta();
    		
    		return x.getValore();
    	}
    	
    	/** Metodo osservatore
    		Verifica se la lista oggetto ricevente contiene l'intero specificato dal parametro
    		@REQUIRES: L'oggetto ricevente deve essere diverso da null
    		@param: i di tipo int, è il valore da cercare nella lista
    		@return: true se l'oggetto ricevente contiene il parametro, false altrimenti
    		@throws: FailureException (unchecked) */
    		
    	public boolean cerca(int i){
    		NodoInt x;
    		boolean trovato = false;
    		
    		if(N == null) throw new FailureException();
    		x = N;
    		while(x != null && x.getValore() != i)
    			x = x.getSuccessivo();
    			
    		if(x != null) trovato = true;
    		
    		return trovato;
    	}
    	
    	public String toString(){
    		NodoInt x;
    		String s= "";
    		
    		x = N;
    		
    		while(x != null){
    			s += x.getValore();
    			x = x.getSuccessivo();
    		}
    		
    		return s;
    	}
    	
    }
    Grazie
    Andrea

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

    Re: [JAVA] Perchè dà errore ogni volta che nomino FailureException?

    Originariamente inviato da AndreaNobili
    però tutte le volte che provo a sollevare una Failure Exception in questa classe mi dà errore in fase di compilazione...che sbaglio?
    Beh, FailureException non è una classe del framework standard di Java .... se è di qualche libreria esterna o l'hai fatta tu non lo so ..... dovresti dirmelo tu.

    Se l'hai fatta tu, allora devi compilarla e renderla disponibile alle altre tue classi.

    A parte chi l'ha fatta e dove sia questa FailureException ... perché andarsi ad inventare una nuova eccezione??? In rimuoviDaTesta() se la lista è vuota (la "testa" è null) chiaramente non puoi rimuovere nulla. In tal caso basterebbe lanciare NoSuchElementException di java.util. Cioè ... esiste già una eccezione con questo apposito significato.

    Originariamente inviato da AndreaNobili
    Altra domanda...a che serve la prima riga: import java.util.*;
    Usi Iterator di java.util ... quindi chiaramente devi importarlo.


    P.S. non ho controllato per bene tutto il resto ma .... ci sarebbero sicuramente cose che non vanno .... il remove() "salta", non rimuove dalla collezione (ah sì ... era per far contenta la prof ).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: [JAVA] Perchè dà errore ogni volta che nomino FailureException?

    Originariamente inviato da andbin
    Beh, FailureException non è una classe del framework standard di Java .... se è di qualche libreria esterna o l'hai fatta tu non lo so ..... dovresti dirmelo tu.

    Se l'hai fatta tu, allora devi compilarla e renderla disponibile alle altre tue classi.

    A parte chi l'ha fatta e dove sia questa FailureException ... perché andarsi ad inventare una nuova eccezione??? In rimuoviDaTesta() se la lista è vuota (la "testa" è null) chiaramente non puoi rimuovere nulla. In tal caso basterebbe lanciare NoSuchElementException di java.util. Cioè ... esiste già una eccezione con questo apposito significato.

    Usi Iterator di java.util ... quindi chiaramente devi importarlo.


    P.S. non ho controllato per bene tutto il resto ma .... ci sarebbero sicuramente cose che non vanno .... il remove() "salta", non rimuove dalla collezione (ah sì ... era per far contenta la prof ).
    Esatto e questa è una sua dispensa...e sta FailureException la usa OVUNQUE....che PALLEEEE !!!
    mmm toccherà che le chiedo se se l'è definita lei a qualche lezione che ho saltato io...anche se ne ho perse veramente poche...ma una cosa standard no? :-/

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.