Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
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


Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
L’evoluzione dell’IA nelle imprese: la v...
Le storie in evidenza di Instagram torna...
Addio GeForce RTX 5060 e Radeon RX 9060?...
Arriva Hisense Déco TV S5Q, estet...
Aggiornata TOP500, la classifica degli H...
Noctua NH-D15 Chromax.black è rea...
NVIDIA aggiorna DGX Spark: nuovo kernel,...
Con Work IQ, Copilot per Microsoft 365 i...
Azure Cobalt 200: svelata la nuova CPU A...
Intel a tutto tondo: tra processi in ram...
AMD FSR Redstone arriverà ufficia...
L'Olanda 'cede' alla Cina: retromarcia t...
Stagione 1 al via: tutte le novità...
TikTok rafforza trasparenza e benessere ...
Zigbee 4.0 è qui: più sic...
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: 17:59.


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