PDA

View Full Version : [JAVA] Scomposizione Vettori


blackguardian
28-01-2010, 00:41
allora ragazzi di nuovo un problemino, vi ripeto che ho 3 oggetti di tipo Case con due parametri es.:

Case uno = new Case(3,5)

praticamente vi spiego...ho un vettore con 7 valori che mi servono e lo chiamo Valori...praticamente andando a confrontare il primo parametro di Case io devo andare a studiare solo le prime "3" posizioni del vettore cioè in questo caso ho 3 nel primo parametro
mettiamo che il mio vettore di valori è

Valori [13] [12] [5] [6] [4] [0] [9]

quindi non riesco a trovare un qualcosa che mi permetta di andare a vedere che valore ha il mio primo parametro di Case che è un oggetto poi andare su questo vettore prendere i primi 3 valori e metterli dentro un altro vettore che chiameremo in un altro modo....

nuovoUtente86
28-01-2010, 01:13
l' oggetto Case avrà un metodo get, accessore, relativo al primo parametro di costruzione che presumibilmente sarà una variabile d' istanza.

blackguardian
28-01-2010, 13:28
bè si però mi sa che rileggendo nn mi sono spiegato bene :D ...cmq io ok ottengo questo valore dall'oggetto case con il get però poi voglio creare con un ciclo un nuovo vettore dove metto un numero di valori in base al primo parametro...cioè 3 e questo per ogni dei miei 3 casi

i miei casi

Case uno = new Case(3,5)
Case due = new Case(1,1)
Case tre = new Case(3,7)

il vettore Valori è quello di prima con 7 valori e voglio fare un ciclo for dove per ogni Case prendo il primo numero lo confronto con il vettore Valori in modo che se è 3 allora prendo questi tre primi valori del vettore Valori li metto dentro un nuovo array di sole 3 posizioni...tutto questo per ogni case

wingman87
28-01-2010, 13:44
Case uno = new Case(3,5);
int vettUno[]=new int[uno.getPrimo()];
for(i=0;i<vettUno.length;i++) vettUno[i]=valori[i];
Case due = new Case(1,1);
int vettDue[]=new int[due.getPrimo()];
for(i=0;i<vettDue.length;i++) vettDue[i]=valori[i];
Case tre = new Case(3,7);
int vettTre[]=new int[tre.getPrimo()];
for(i=0;i<vettTre.length;i++) vettTre[i]=valori[i];

E' questo che intendevi?

banryu79
28-01-2010, 13:59
Prova a vedere se questo esempio ti è di aiuto:

class Case
{
private int first, second;

public Case(int first, int second) {
this.first = first;
this.second = second;
}

public int getFirstParameter() { return first; }
}


public class Valori
{
// il tuo vettore di Valori
private int[] valori;

public Valori(int... values) {
this.valori = new int[values.length];
for(int i=0; i<values.length; i++) {
valori[i] = values[i];
}
}

public int[] valuesForCase(Case c) {
int param = c.getFirstParameter();
// gestiamo il caso in cui il valore nel Case sia maggiore
// della lunghezza del nostro "vettore" Valori
param = (param<=valori.length) ? param : valori.length;

int[] valuesForCase = new int[param];
for(int i=0; i<param; i++) {
valuesForCase[i] = valori[i];
}
return valuesForCase;
}

public static void main(String... argv) {
// Questo esempio stampa in output 13, 12, 5.
Valori v = new Valori(13, 12, 5, 6, 4, 0, 9);
Case uno = new Case(3,6);

int[] caseUno = v.valuesForCase(uno);

for(int value : caseUno) {
System.out.print(value+" ");
}
}
}


A proposito, ma il secondo parametro di Case a cosa serve?

blackguardian
28-01-2010, 20:07
no forse non sono stato chiarissimo ma sto risolvendo con una cosa del genere


Case[] casi = Lettura.leggiInput();


CalcoloDistanze cd = new CalcoloDistanze();

for(Case c : casi) {

cd.daiRisultati(c); //qui ottengo il vettore risultati con tutte le distanze tra i punti

int NumCirc = c.getN(); //valore di N nel caso corrente

Vector conf = new Vector(); //nuovo vettore per mettere 3 elementi del vettore risultati



for (int i=0; i<NumCirc;i++){ // per aggiungere al nuovo vettore i primi 3 elementi del vettore risultati

conf.add(risultati[i]);
}


però non capisco perche risultati me lo segna di rosso dato che è un vettore che viene creato dal metodo cd.daiRisultati(c); mi dice che risultati cannot be resolved...perche???

wingman87
28-01-2010, 21:00
Ma dove l'hai dichiarato "risultati"?

blackguardian
28-01-2010, 21:30
in un altro metodo dentro un altra classe

wingman87
28-01-2010, 22:04
Quindi in quello spezzone di codice che hai postato è normale che non lo veda.

blackguardian
29-01-2010, 00:16
ho usato anche un metodo return nella stessa classe ma non gli piace neanche li....

wingman87
29-01-2010, 00:30
Posta il codice del metodo daiRisultati

PS: stai lavorando su un codice scritto da altri?

blackguardian
29-01-2010, 00:39
no no è un prgetto che sto facendo io...però aspetta che forse ho risolto...non vedevo una cosa abbastanza banale...