| V I S U A L I Z Z A D I S C U S S I O N E |
| Mauris |
Inserito il - 18/11/2008 : 10:28:23 RAGAZZI IO HO QUESTO CODICE:
import java.util.Scanner;
import java.io.*;
public class gestionearray {
public static void leggiarray (int []a) //acquisisce elelemti da tastiera
{
int i;
Scanner input = new Scanner (System.in);
for (i=0;i<a.length;i++){
System.out.println (" inserisci elemento di indice "+ ":");
a[i] = input.nextInt(); }
}
public static void stampaarray (int []a) { //stampa elementi sul terminale
int i;
for (i=0;i<a.length;i++ )
System.out.println(a [i]+ ":");
System.out.println();
}
public static boolean search ( int []a, int k) {
int i = 0;
Scanner input = new Scanner (System.in);
k = input.nextInt();
boolean trovato;
trovato = false;
for (i=0;i<a.length;i++)
{
if (a[i]==k)
trovato = true;}
return trovato;
}
}
ACQUISISCO GLI ELEMENTI , LI STAMPO MA POI NON RIESCO AD EFFETTUARE LA RICERCA. PERCHè NON MI FA FARE LA RICERCA???
QUESTO è IL MAIN
import java.util.Scanner;
public class testgestionearray {
/**
* @param args
*/
public static void main(String[] args) {
int []a;
int k = 0;
a = new int [10]; //creo l'oggetto array
gestionearray.leggiarray(a);
gestionearray.stampaarray(a);
gestionearray.search (a,k);
}
} |
| 18 U L T I M E R I S P O S T E (in alto le più recenti) |
| genius |
Inserito il - 19/11/2008 : 18:30:53 Citazione: Messaggio inserito da Mauris
avevi ragione grazie, non ho capito bene perchè non era possibile quella ugualianzalo capirò da solo. grazie mille
l'errore non è l'ugualianza, ma il fatto che il ciclo for era in realtà vuoto (in java il ';' segna la fine di un'istruzione). In pratica nel ciclo non facevi niente se non aumentare i. All'uscita dal ciclo i ha valore 'a.length', e quindi effetti una sola assegnazione, cioè c[a.length] = a[a.length], che è ovviamente errata dato che l'indice di un vettore parte da 0 e arriva a a.length-1.
E' + chiaro ora? |
| Mauris |
Inserito il - 19/11/2008 : 17:53:21 avevi ragione grazie, non ho capito bene perchè non era possibile quella ugualianzalo capirò da solo. grazie mille |
| Mk178 |
Inserito il - 19/11/2008 : 13:58:04 ahahaha odio quando succede!!!  come previsto era il ciclo for ad avere un problema....
public static int [] copia (int []a) {
int []c;
int i;
c = new int[a.length]; //costruisce un nuovo array di dimensione uguale ad a[]
for (i=0;i<a.length;i++);//<-- Vedi bene QUI
{c[i]= a[i];}
return c;
} ...Poniamo ke a sia un vettore di interi di 10 elementi... questo codice, così cm è, crea un array d interi c; crea una variabile intera i; alloca l'array c, come array di interi di lunghezza pari a quella di a, cioè 10; incrementa i da 0 a 9, incrementa ancora di uno, esce xkè la condizione i<a.length nn è + valida; assegna a c[10]=a[10];IMPOSSIBILE xkè entrambi hanno indice massimo pari a 9;
Potevo semplicemente dirti di cancellare quel punto e subito dopo l'istruzione for, ma sarebbe stato troppo semplice... ;P
Ciao |
| Mk178 |
Inserito il - 19/11/2008 : 13:31:35 java.lang.ArrayIndexOutOfBoundsException è un eccezione ke viene lanciata quando si accede ad un elemento dell array, con un indice errato, c sarà qualkosa nel ciclo for...es. se V è un array di 10 elementi V[10] lancia l'eccezione, xkè l'indice di V va da 0 a 9...Mi costringi ad aprire eclipse, cosa ke nn m andava d fare sinora...;P t faccio sapere tra un pò
@velikomrsic ho già visto il tuo topic, se potevo aiutarti, l'avrei già fatto...io faccio TPS è credo ke sia un pò differente ASD a noi.sorry |
| Mauris |
Inserito il - 19/11/2008 : 13:20:09 inoltre mi indica che la variabile copia non è mai letta, cio "is never read". questo nel main mi succede |
| Mauris |
Inserito il - 19/11/2008 : 13:13:39 non mi va mi lancia dlle eccezzioni , avevo già provato io. eccezzioni del tipo.Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at gestionearray.copia(gestionearray.java:81) at testgestionearray.main(testgestionearray.java:13)
cmq scusami il disturbo
|
| velikomrsic |
Inserito il - 19/11/2008 : 12:55:20 mk178 mi sapresti aiutare a fare l'esame ora? |
| Mk178 |
Inserito il - 19/11/2008 : 12:54:32 bhè il richiamare un fuzione ke restituisce qualkosa, nn è quasi mai solo nella forma gestionearray.copia(). Come nel caso della fuzione search(), anke in questo caso, devi "utilizzare" ciò ke restituisce la funzione. Io penserei a qualkosa del tipo:
public static void main(String[] args) {
int []a;
int k = 0;
a = new int [10]; //creo l'oggetto array
gestionearray.leggiarray(a);
gestionearray.stampaarray(a);
gestionearray.search (a,k);
int[] copia=gestionearray.copia(a);
gestionearray.stampaarray(copia);//verifica della avvenuta copia
} |
| Mauris |
Inserito il - 19/11/2008 : 11:54:17 public static int [] copia (int []a) { int []c; int i; c = new int[a.length]; //costruisce un nuovo array di dimensione uguale ad a[] for (i=0;i<a.length;i++); {c[i]= a[i];} return c; } ragazzi io ho questo pezzo di codice che mi restituisce lacopia di un array a gia acquisito.....Come posso richiamare il metodo copia nel main???perche con la semplice chiamata gestionearray.copia()non mi funziona |
| Mk178 |
Inserito il - 18/11/2008 : 20:06:16 Di niente, cmq sarà una mia impressione, ma sn i classici errori ke faccio quando vado avanti con il Copia&Incolla ;P Personalmente te lo sconsiglio, quelli sn i risultati...:D
Per quanto riguarda l'input da tastiera fai un metodo getVal così:
public class int getInt(){
Scanner input = new Scanner (System.in);
return input.nextInt();
} Evitando di ripetere ogni volta il codice. Infine utilizza la search senza prevedere al suo interno l'acquisizione e nel main chiamala così: gestionearray.search (a,getInt());
Naturalmente sn solo consigli, fai cm vuoi...
Ciao ciao |
| Mauris |
Inserito il - 18/11/2008 : 17:08:43 miki grazie era la sistem cke dovevo mettere nel mai però senza il parametro k mentre il resto stava bene ti ringrazio non mi era venuto proprio di mettere questo nel main infatti mi restituisce tru e false grazie
|
| Mk178 |
Inserito il - 18/11/2008 : 14:53:33 @genius: abbiamo postato quasi contemporaneamente, nn l'avevo notato prima = ho ridetto una cosa detta da te.
@Mauris: scusa, se ne main inserisci System.out.println(gestionearray.search (a,k)); ke fà? cmq continuo a nn capire l'utilità del parametro k....
Ciao |
| Mauris |
Inserito il - 18/11/2008 : 13:03:02 genius allora il programma mi fa inserire l'elemento da cercare perchè ho messo la scanner nel metodo search. ma questo elemento penso che non venga confrontato con gli elementi dell'array perchè in outup non ho ne true ne false;in sostanza non mi dice se l'elemento k che io voglio cercare è presente nel vettore o meno.
spero di essermi spiegato meglio |
| Mauris |
Inserito il - 18/11/2008 : 12:59:57 scusa, non mi fa ilconfronto con gli elementi dell'array. mi sapreste trovare una soluzione?? |
| Mauris |
Inserito il - 18/11/2008 : 12:53:32 allora il codice mi legge il vettore e poi mi stampa l'array. io vorrei cercare un elemento nell'array, k è l'elemento che voglio verificare sè è presenta nel vettore o no.In sostanza dopo la lettura e la stampa , il codice (dato lo scanner nel searvh)mi fa inserire il numero k da cercare ma non mi fa il confronto con l'array a[] |
| Mk178 |
Inserito il - 18/11/2008 : 12:47:21 aspè ma io credevo ke passassi k alla funzione, xkè fosse k l'elemento da cercare....tu invece vuoi ke all'interno della funzione chieda il valore da cercare?(giusto?) se si, xkè passargli k, dichiaralo direttamente all'interno...o no?
mmm...
in tal caso nn saprei, dovresti spiegare meglio ke errore fà...
Ciao |
| genius |
Inserito il - 18/11/2008 : 12:40:15 innanzitutto non capisco il parametro "k" del metodo search, dato che k lo valorizzi all'interno del metodo.
Inoltre non capisco cosa intendi per "non mi fa fare la ricerca". Ti da errore? Non ti restituisce quello che ti aspetti? Io so solo che così com'è il programma non dà nessun output "visibile" del fatto che trovi o meno l'elemento. puoi spiegarti meglio? |
| Mk178 |
Inserito il - 18/11/2008 : 12:39:24 ke errore t dà? Nn complia il codice o è un errore in esecuzione(presumo la seconda)?
in ogni caso, xkè fai questa cosa nella funzione search()?:
Scanner input = new Scanner (System.in);
k = input.nextInt(); prova ad eliminare queste due righe... cosa succede?
facci sapere
ciao
|