Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-01-2010, 15:49   #1
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
[JAVA] Vector

guardate questo pezzo di codice fatto da me

Codice:
public   double distanza(Point p1,Point p2){
		return Math.sqrt(Math.pow((p1.x-p2.x),2)+Math.pow((p1.y-p2.y),2)); 
	}
	
	
	public  double [] daiDistanze(Vector punti){
		int dimArraydist=fatt(punti.size())/(2*fatt(punti.size()-2)); 
		double [] distanze=new double [dimArraydist]; 
		int pos=0;
		for(int i=0;i<punti.size()-1;i++){                 
			for(int j=i+1;j<punti.size();j++){             
				distanze[pos]=distanza(punti.elementAt(i),punti.elementAt(j)); // l'errore è qui
				pos++;									  	
			}
		}
		return distanze;
	}
mi da errore li quando metto il risultato del metodo distanza() dentro a distanze[pos], cioè mi segna di rosso "distanza" ( ti commento dove di ma l'errore...)
mi dice questo...
The method distanza(Point, Point) in the type CalcoloDistanze is not applicable for the arguments (Object,
Object)
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2010, 16:11   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Poichè Point è figlio di Object ovunque tu veda "Object" puoi usare "Point".

Non vale il contrario: dove c'è Point non puoi usare Object.

Il metodo elementAt di un Vector "raw" (cioè non parametrico) restituisce un Object, da cui l'errore.

Risolvi con una conversione esplicita:

distanza((Point) punti.elementAt(i), (Point)punti.elementAt(j));

che in tanto vale in quanto il tipo in esecuzione dei valori restituiti da elementAt(i) ed elementAt(j) siano Point o derivati di Point.
__________________
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
Old 23-01-2010, 20:33   #3
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
grazie mille ma poi sotto ho un altro errore cioè quando vado a creare un array per metterci all'interno i miei risultati

double [] risultati=daiDistanze(punti);

anche qui nn gli va bene
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2010, 20:43   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Considera che per quanto avanzati siano i linguaggi di programmazione restano comunque piuttosto stupidi, quantomeno se comparati all'idea di intelligenza umana cioè la capacità di prendere pessime decisioni sulla base di informazioni errate con argomentazioni che non stanno nè in cielo nè in terra.

Qui di errato non ci può essere molto:

double [] risultati=daiDistanze(punti);

"punti" è un java.util.Vector?

Se punti è un java.util.Vector allora è un problema di accesso al metodo daiDistanze. Bisognerebbe vedere il codice nel suo complesso per sapere con certezza quale sia il problema.
__________________
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
Old 23-01-2010, 21:43   #5
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
si punti è un java.util.Vector non capisco proprio cos'è che nn va...cmq l'errore che mi da è questo...

The method daiDistanze(Vector) in the type CalcoloDistanze is not applicable for the arguments
(Point[])
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2010, 21:48   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Stando al messaggio "punti" non è un java.util.Vector ma un array di oggetti Point.
__________________
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
Old 24-01-2010, 11:19   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
...quantomeno se comparati all'idea di intelligenza umana cioè la capacità di prendere pessime decisioni sulla base di informazioni errate con argomentazioni che non stanno nè in cielo nè in terra.
Stavi facendo del sarcasmo, vero?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 13:18   #8
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
punti è un Vector di oggetti point...creato in un'altra classe...quindi li invece di scriverci "punti" cosa devo scriverci?
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 13:47   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se punti è un Vector allora è giustissimo dire:

double[] p = daiDistance(punti).

Il problema è che il compilatore dice che quel nome "punti" lì dove lo usi è un Point[] ed è difficile che si sbagli.

Bisogna vedere il codice completo. Forse hai più cose che si chiamano "punti"?
__________________
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
Old 24-01-2010, 13:59   #10
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
allora forse il problema sta li nel mio primo post quando inizia il metodo

public double [] daiDistanze(Vector punti){

qui la parola Vector me la segna di giallo e mi dice che...
Vector is a raw type. References to generic type Vector<E> should be parameterized

secondo te? che significa?
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 14:14   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non è quello il problema.

L'ide ti segnala che stai usando una class generica (Vector) senza una dichiarazione di parametro.

Se vai a guardare la classe Vector vedi che è dichiarata con una lettera tra i segni <>:

Vector<E>

Significa che quando usi la classe Vector puoi specificare tra i segni <> il nome di un tipo. Tu usi:

Vector punti

ma potresti anche dire:

Vector<Point> punti

Quando dichiari il tipo di parametro il Vector che usi diventa un operatore sul tipo di oggetti stabilito dalla dichiarazione di parametro (in questo caso Point). Nel caso di Vector<X> l'operazione principale è il contimento (Vector<X> è qualcosa che contiene oggetti di tipo X).

Quando incontri una classe generica (cioè una classe che, come vector, è dichiarata nella forma NomeClass<Qualcosa>) è consigliabile usarla con una dichiarazione di parametro (cioè Vector<Point> anzichè Vector e basta) perchè il compilatore è in grado di verificare la compatibilità degli oggetti-operandi (quello che passi al vettore con i metodi add, setElementAt eccetera) con il tipo applicabile all'operatore (cioè il tipo dichiarato tra i segni < >), il che ti può risparmiare qualche raro ClassCastException e un po' di conversioni esplicite.

Tuttavia non è un errore usare un tipo generico senza dichiarazione di parametro e il programma compila e funziona ugualmente.

il problema è da qualche altra parte.
__________________
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
Old 24-01-2010, 14:23   #12
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
cosi mi creao il mio vettore Vector di punti

Codice:
public class Case {
	public  int N;
	public  int M;
	private Vector punti;
	
	public Case (int N, int M) {
	
		if (0 < N | N<=9 | 0 < M | M <= 200){
		this.M = M;
		this.N = N;
		this.punti = new Vector();}
		else System.out.println("I dati inseriti per N o M hanno un range errato");
	}
	
	
  
	public void aggiungiPunto(Point p){
		punti.add(p);
	
		
	}
	
	public Point leggiPunto(int i){
		return (Point)punti.get(i);
	
		
	}
	
	
}
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 14:36   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Mmhhh, la trama si infittisce.

La classe è ok.

La cosa strana è che in quella classe "punti" è un membro privato delle istenza di Case.

Significa che non hai modo di usare quel "punti" al di fuori del corpo della classe Case. Quandi scrivi:

Case case = new Case();

quel "case" ha dentro di sè un Vector "punti" ma quel "punti" è una cosa "privata", inaccessibile: solo case lo può usare.

Da che deduciamo che quando da qualche altra parte scrivi:

double p = daiDistance(punti)

il nome "punti" non fa riferimento a ciò che potrebbe sembrare.

Tieni conto che, in generale, non è sufficiente che due cose abbiano lo stesso nome perchè sia anche la stessa cosa.

Per la soluzione bisogna ancora avere il programma completo sottomano altrimenti si rischia di far confusione. A mo' di chiacchiera potrei dire che la classe Case potrebbe avere un metodo getPunti così fatto:

Codice:
public Vector getPunti() {
    return punti;
}
La dove usi daiDistance(punti)

dovresti anche avere un riferimento di tipo Case (cioè una riga che dice: Case case = new Case(qualcosa, qualcosa)). Il "punti" che passi a daiDistance diventerebbe quindi case.getPunti(), cioè:

double[] p = daiDistance(case.getPunti());

Ma è solo un'indicazione di massima che, ripeto, potrebbe più confondere le idee che schiarirle.
__________________
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
Old 24-01-2010, 15:24   #14
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
praticamente io leggo un filke txt e ho una classe che mi legge appositamente questa lettura che non c'entra niente con il mio problema cmq creo con un ciclo sempre un nuovo oggetto Case

Case c = new Case(N,M);

dove N ed M variano in base a quello che devo leggere..e memorizzo il Case c dentro un array cosi definito

Case[] casi = new Case[100];

per quanto riguarda invece gli oggetti punto (leggo anche quelli)
faccio

Point p= new Point(x,y);

e di volta in volta faccio

c.aggiungiPunto(p);

non capisco proprio cos'è che nn va...questo è tutto il mio programma non c'è altro
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 15:53   #15
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
E' un problema di ambito dei nomi. Quando scrivi:

double p = daiDistance(punti)

la dichiarazione del nome "punti" dov'è?
__________________
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
Old 24-01-2010, 16:03   #16
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
li nella classe Case che ti ho postato prima quando faccio...

public Vector punti;

no??? oddio guarda mi sta facendo impazzire...
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 16:11   #17
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non può essere quella.

Codice:
public class Case {
	public  int N;
	public  int M;
	private Vector punti;
	
	public Case (int N, int M) {
	
		if (0 < N | N<=9 | 0 < M | M <= 200){
		this.M = M;
		this.N = N;
		this.punti = new Vector();}
		else System.out.println("I dati inseriti per N o M hanno un range errato");
	}
  
	public void aggiungiPunto(Point p){
		punti.add(p);
		
	}
	
	public Point leggiPunto(int i){
		return (Point)punti.get(i);
	
	}	
}
Quel punti lì esiste solo nel corpo della classe Case. Al di fuori della classe Case "punti" non è accessibile.

Se il compilatore non ti da un "Cannot resolve symbol" ma dice che là dove lo usi "punti" è un Point[] significa che hai almeno un'altra variabile che hai chiamato "punti". Puoi incollare il codice completo della classe che contiene il metodo daiDistance?
__________________
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
Old 24-01-2010, 16:19   #18
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
Codice:
public class CalcoloDistanze {
	
	public   double distanza(Point p1,Point p2){
		return Math.sqrt(Math.pow((p1.x-p2.x),2)+Math.pow((p1.y-p2.y),2)); //calcolo matematico della distanza fra due punti
	}
	
	
	public  double [] daiDistanze(Vector punti){
		int dimArraydist=fatt(punti.size())/(2*fatt(punti.size()-2)); //calcolo delle disposizioni semplici senza ripetizioni
		double [] distanze=new double [dimArraydist]; // nuovo vettore per memorizzare le distanze calcolate e la grandezza è data dalle disposizioni
		int pos=0;
		for(int i=0;i<punti.size()-1;i++){                 // questi due cicli fanno in modo che un elemento si confronti con il successivo
			for(int j=i+1;j<punti.size();j++){             //cioè slittati di una posizione
				distanze[pos]=distanza((Point)punti.elementAt(i),(Point)punti.elementAt(j)); // richiamo il metodo che mi calcola la distanza fra due punti e me la mette 
				pos++;									   // dentro l'array distanze	
			}
		}
		return distanze;
	}
	
	
	private  int fatt(int n){ //metodo per il calcolo del fattoriale
			int i=1;
			int fatt=1;
			if(n>=0){
				while(i<=n){
					fatt=i*fatt;
					i++;
			    }
			}else{
				fatt=-1;
		    }
		    return fatt;
	}
public void daiRisultati(){ // questo metodo invece lo vado a mettere nel main o resta qui nn lo so devo decidere
	
	double [] risultati=daiDistanze(punti);
	for(int i=0;i<risultati.length;i++){
		System.out.println(risultati[i]);}

Ultima modifica di blackguardian : 24-01-2010 alle 16:22.
blackguardian è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2010, 16:23   #19
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Bene, adesso ci manca solo la classe che contiene l'invocazione del metodo daiDistance. Puoi incollare anche quella?
__________________
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
Old 24-01-2010, 16:26   #20
blackguardian
Member
 
Iscritto dal: Jan 2010
Messaggi: 64
no ancora nn c'è cmq non diachiaro da nessun altra parte "punti"...non capisco proprio
blackguardian è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
Speciale TV in offerta su Amazon: Hisens...
Non c'è pace per Trezor: 347.000 e-mail ...
È un portatile Dell e li vale tut...
Apple iPhone 17 Pro Max 256GB a 1.195€ (...
GPT-6 Astra è davvero AGI o non s...
LG OLED G6S 48'' a 845€ e G6 55'' a 1368...
Mantax Otax: il malware Android che crip...
Musk incassa un altro maxi contratto IA:...
Le vendite di EV sono esplose in tutto i...
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: 23:04.


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