Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-06-2009, 16:54   #1
e-commerce84
Senior Member
 
Iscritto dal: Feb 2009
Messaggi: 700
[JAVA] Gestire collezione di stringhe particolari, non funziona !!!

Ciao,
stò vedendo degli esercizzi stile compito d'esame (che è vicinissimo per cui vi prego di darmi una mano).
Sono un po' in crisi con questo esercizio:

Scrivere una classe Java chiamata Involucro che rappresenta collezioni di stringhe del tipo <s1, s2, s3,....,sn> tali che s1 è interamente contenuta in s2, s2 è interamente contenuta in s3, e così via.

Quindi penso io collezioni di stringhe tipo questa:

{'a', 'ab', 'abc'} ma anche di questo tipo {'z', 'az', 'azr', 'xazr'} perchè basta che l'i-esima stringa sia contenuta nella (i+1)-esima stringa della collezione

Le operazioni richieste sono:
a) Inserimento di una stringa in un oggetto di tipo involucro con modifica di tale oggetto.

b) Fusione di due oggetti <s1,s2,s3,...,sn> e <t1,t2,t3,...,tn> di tipo Involucro per formare un nuovo oggetto <s1,s2,s3,...,sn,t1,t2,t3,...,tn> Si osservi che questa operazione non è sempre possibile.

c) Accesso in lettura alla collezione


Bene...io l'ho risolto così...però mi dà vari errori in fase di compilazione che non riesco a risolvere.
(Il codice sembra lungo ma non lo è perchè è pieno di documentazione...la vuole la proff sull'esame e mi stò abituando a farla anche a casa...magari potete saltarla)

Codice:
public class Involucro{
	/** OVERVIEW: Involucro rappresenta una collezione dinamica di stringhe del tipo <s1, s2, s3,...., sn> tali che 
				  s_i è completamente contenuta in s_(i+1).
				  
				  V = {{s1,s2,s3,...,sn>: Per ogni i s_i è una stringa ed s_i è interamente contenuto in s_(i+1)}}
				  
				  O = inserisci: Se l'oggetto che si vuole inserire è coerente con la rappresentazione della collezione
				                 (è una stringa) e con lo stato attuale della collezione (i valori già presenti nella
				                 collezione), allora lo inserisce nella collezione modificandola
				      
				      fondi: Date collezioni S e T se s_n è interamente contenuto in t_1 allora fonde le due collezioni nel
				             seguente modo: S = <s1,s2,s3,...,sn> T = {t1,t2,t3,...,tn} --> {s1,s2,s3,...,sn,t1,t2,t3,..,tn}
				      
				      get(i): Accede in maniera posizionale all'i-esimo elemento della collezione */
				     
	private Vector collStr;			// Rappresenta la collezione di stringhe
	
	
	/** FUNZIONE DI ASTRAZIONE: F_a(): STATO CONCRETO ----> STATO ASTRATTO
								F_a([a, ab, abc, abcd]) ------> {<a, ab, abc, abcd>}
								ma anche: F_a([a, b(a), (ba)f, z(baf), (zbaf)e]) ---> {a, ba, baf, zbaf, zbafe}
								
		INVARIANTE DI RAPPRESENTAZIONE: è un predicato I: C ---> boolean che è vero per gli stati concreti che sono
										rappresentazioni leggittime di uno stato astratto:
										
										I(collStr): collStr != NULL (il Vector deve essere sempre diverso da NULL)
										Per ogni i: v.get(i) deve essere incluso in v.get(i+1) (la i-esima stringa deve
										sempre essere interamente contenuta nella (i+1)-esima stringa della collezione */
										
	/** COSTRUTTORE:
		EFFECTS: Crea un nuovo oggetto di tipo Involucro che rappresenta la collezione vuota
		@param: void:
		@return: Il riferimento ad un oggetto di tipo Involucro
		Il costruttore soddisfa l'invariante di rappresentazione in quanto: 1) Viene assegnata alla variabile di istanza
		collStr il riferimento ad un nuovo Vector quindi no è mai null. 2) Il costruttore crea una collezione vuota che
		rappresenta la stringa vuota contenuta in ogni stringa, quindi qualsiasi sia il primo elemento va bene */
		
	public Involucro(){
		collStr = new Vector();		// Crea la collezione vuota assegnando a collStr il riferimento ad un nuovo Vector vuoto
	}
	
	/** Metodo inserisci()
		EFFECTS: Se il parametro può essere inserito nella collezione (se contiene completamente l'ultima stringa della
				 collezione, allora viene inserito nella collezione rappresentata dall'oggetto ricevente, altrimenti viene
				 sollevata una StringaNonValidaException
		MODIFIES: this
		@param: Un oggetto di tipo String 
		Il metodo inserisci() soddisfa l'invariante di rappresentazione in quanto se la collezione è vuota permette
		l'inserimento di una stringa qualsiasi, se invece nella collezione è già presente qualcosa prima di inserire il
		parametro controlla che il parametro contiene completamente l'ultima stringa presente nella collezione. Se ciò è
		verificato la inserisce, altrimenti no e la collezione rimane sempre coerente con la sua definizione */
				 
	public void inserisci(String s){
		
		int n = this.collStr.size(); 	// Mette in n il numero di elementi presenti nella collezione ricevente
		
		if(collStr.size() == 0)			// Se la collezione è vuota
			collStr.addElement(s);		// allora aggiungi l'elemento in prima posizione
		else{							// Se invece la collezione non è vuota
			if(s.contains(this.collStr[n]))	// Se la stringa parametro s contiene l'ultima stringa della collezione
				collStr.addElement(s);	// allora agiunge l'elemento nella collezione
			else throw new StringaNonValidaException();	// Altrimenti non lo inserisce e solleva un'eccezione
		}
	}
	
	/** Metodo fondi():
		EFFECTS: Se possibile fonde la collezione ricevente con quella referenziata dal parametro. Tale fusione è possibile
				 se e solo se l'ultimo elemento della collezione ricevente è totalmente contenuto nel primo elemento della
				 collezione referenziata dal parametro, altrimenti solleva una CollezioneParametroNonValidaExcepion
				 Eventualmente la dusione fosse possiebileil metodo crea una nuova collezione che contiene la fusione delle
				 due collezioni iniziali.
		@param: Il riferimento ad un oggetto Involucro
		@return: Il riferimento ad un nuovo oggetto Involucro
		Il metodo rispetta l'invariante di rappresentazione in quanto ne l'oggetto ricevente, ne il parametro possono essere
		null e poichè l'eventuale nuova collezione rispetta la proprietà che Per ogni i, l'i-esima stringa è sempre
		contenuta nella (i+1)-esima stringa */
		
	public Involucro fondi(Involucro i){
		
		int n = this.collStr.size(); // Mette in n il numero di elementi presenti nella collezione ricevente
		int m = i.collStr.size();	// Mette in m il numero di elementi presenti nella collezione parametro
		private Vector vettoreFusione;		// Conterrà l'eventuale fusione delle 2 collezioni
		int contatore;
		
		/* Se la prima stringa contenuta nella collezione referenziata dal parametro contiene completamente l'ultima stringa
		   contenuta nella collezione ricevente */
		if(i.collStr[1].contains(this.collStr[n])){
			vettoreFusione = new Vector();				// Crea il vettore che conterrà la fusione delle due collezioni
			
			for(contatore=0; contatore<=n; contatore++) 	// Copia gli elementi della prima collezione in vettoreFusione
				vettoreFusione.addElement(this.collStr[contatore]);
				
			for(contatore=0; contatore<=m; contatore++)		// Copia gli elementi della seconda collezione in vettoreFusione
				vettoreFusione.addElement(i.collStr[contatore]);
		}
		
		// Se invece non è possibile eseguire la concatenazione	solleva un'eccezione
		else throw new CollezioneParametroNonValidaExcepion();
		
		return vettoreFusione;		// Ritorna al chiamante il vettore che contiene la fusione delle due collezioni
	}
	
	/** Metodo get(i):
		EFFETS: Accede in lettura in maniera posizionale agli elementi della collezione
		REQUIRES: La collezione non deve essere vuota
		@param: Un valore intero che rappresenta la posizione a cui voglio accedere nella collezione
		@return Un valore String che rappresenta la stringa a cui voglio accede
		Non modificando la collezione rispetta l'invariante di rappresentazione */
		
	public String get(int i){
		if(i >= collStr.size())		// Se si tenta di accedere ad una locazione più grande della dimensione della collezione
			throw FuoriDallaCollezioneException();		// Lancia un'eccezione
		
		else return collStr.elementAt(i);		// Altrimenti restituisci la stringa in posizione i
	}
}
Gli errori che mi da il compilatore sono questi:

C:\Programmi\Crimson Editor\template\esercizi\esami\11-07-07>javac Involucro.java
Involucro.java:82: illegal start of expression
private Vector vettoreFusione; // Conterrà l'eventuale fusione delle 2 collezioni
^
Involucro.java:87: illegal start of type
if(i.collStr[1].contains(this.collStr[n])){
^
Involucro.java:87: ']' expected
if(i.collStr[1].contains(this.collStr[n])){
^
Involucro.java:87: invalid method declaration; return type required
if(i.collStr[1].contains(this.collStr[n])){
^
Involucro.java:87: illegal start of type
if(i.collStr[1].contains(this.collStr[n])){
^
Involucro.java:98: illegal start of type
else throw new CollezioneParametroNonValidaExcepion();
^
Involucro.java:98: invalid method declaration; return type required
else throw new CollezioneParametroNonValidaExcepion();
^
Involucro.java:100: illegal start of type
return vettoreFusione; // Ritorna al chiamante il vettore che contiene la fusione delle due colle
zioni
^
Involucro.java:100: <identifier> expected
return vettoreFusione; // Ritorna al chiamante il vettore che contiene la fusione delle due colle
zioni
^
Involucro.java:110: class, interface, or enum expected
public String get(int i){
^
Involucro.java:114: class, interface, or enum expected
else return collStr.elementAt(i); // Altrimenti restituisci la stringa in posizione i
^
Involucro.java:115: class, interface, or enum expected
}
^
12 errors

Cosa c'èdi sbagliato?

Tnx
e-commerce84 è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2009, 18:07   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Controlla le parentesi. Qui ad esempio ne manca una:

Codice:
		if(collStr.size() == 0)			// Se la collezione è vuota
			collStr.addElement(s);		// allora aggiungi l'elemento in prima posizione
		else {
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Il remake di Assassin's Creed IV: Black ...
Tutti i robot aspirapolvere in offerta s...
Amazon Haul spinge la promo di San Valen...
Offerte hardware Amazon per l'upgrade de...
iPhone 17e dovrà fare i conti con...
Offerte Amazon sugli iPhone di ultima ge...
DJI Mini 5 Pro Combo Fly More scende a 8...
Ubisoft potrebbe licenziare ancora ma se...
Samsung Galaxy S26: un leak anticipa col...
Aetherflux e Lockheed Martin insieme per...
SpaceX sta proseguendo i test della terz...
Axiom Space ha mostrato un nuovo video d...
Realme: la trasformazione in sub-brand d...
PlayStation 6 si farà attendere: ...
BWT Alpine chiude la prima tornata di pr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v