Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
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


Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Johnson Controls amplia la gamma di solu...
NASA Perseverance: il rover potrebbe ave...
Quelli di Immuni si 'pappano' Vimeo: Ben...
Changan lancia la Deepal S05 in Europa, ...
Substrati in vetro, Intel smentisce le v...
ECOVACS DEEBOT T50 PRO OMNI Gen2 fa piaz...
Windelo 62: catamarano a vela che unisce...
Francia, in arrivo un incentivo di 1.000...
Haier, la sorpresa a IFA: la lavatrice C...
GeForce RTX 5000 SUPER in arrivo? Sembra...
Ionity prova una soluzione contro i ladr...
Pirateria, svolta clamorosa: Dazn e Lega...
Maxi richiamo Toyota e Lexus: oltre 900....
Blackwell Ultra: fino al 45% di prestazi...
Neuralink: 12 pazienti hanno usato l'imp...
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: 18:03.


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