|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
![]() |
#1 |
Senior Member
Registrato: 01-03-2006
Messaggi: 249
![]() |
[Java]Programmino livello universitario
int[] mulVett(int vettore[], int d){ int[] vett2 = new int[vettore.length/d]; int j = 0; for (int i = 0; i < vettore.length - d; i+=d){ vett2[j] = vettore[i]; j++; } main: int l = 10, n = 3; int vet[] = new int[l]; for (int i = 0; i < vet.length; i++){ vet[i] = 1 + (int)(Math.random()*100); System.out.print(vet[i] + " "); } System.out.print("\n"); int res[] = mulVett(vet, n); for (int i = 0; i < res.length; i++){ System.out.print(res[i] + " "); } Ecco io vorrei sapere perchè, se lo lascio così, del vettore risultato non mi stampa l'ultimo elemento, mentre se levo quel "- d" nella condizione d'arresto del ciclo for all'interno di mulVett mi da una ArrayIndexOutOfBoundsException... Grazie a chi ha qualche suggerimento.
___________________________________
1 + 1 = 3, for large values of 1. |
![]() |
![]() |
![]() |
#2 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
![]() |
L'errore sta nella dimensione del vettore da restituire (btw: manca il return nel metodo, eh
![]() La cosa è gestibile, senza ricorrere a funzioni ulteriori, così: Codice:
lunghezza = vettore.length/d; if ((vettore.length % d) != 0) lunghezza += 1; int[] vett2 = new int[lunghezza] Si può anche far così: Codice:
int[] vett2 = new int[(int)Math.ceil((double)7/(double)3))] ![]() In sostanza, non avendo correttamente dimensionato l'array, se ti fermavi un ciclo prima tutto ok (ma ti mancava l'ultimo elemento), se invece analizzavi tutto l'array di partenza andavi in ArrayIndeXOutOfBound per l'array destinazione, in quanto cercavi di scrivere in una posizione non allocata. Per il resto è ok ![]() Ultima modifica di Dav82 : 03-05-2006 alle ore 20.42.19 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Registrato: 01-03-2006
Messaggi: 249
![]() |
Già, la posizione zero!! Eroore scemo. Grazie per il consiglio
![]()
___________________________________
1 + 1 = 3, for large values of 1. |
![]() |
![]() |
![]() |
#4 |
Gold Member
Top Poster
Registrato: 18-07-2002
Messaggi: 6.399
![]() |
Poi dipende tutto dalla specifica eh
![]() Dipende se il primo elemento dell'array lo consideri (a livello logico) come in posizione zero o in posizione uno... tutto lì ![]() |
![]() |
![]() |
![]() |
#5 |
Senior Member
Registrato: 01-03-2006
Messaggi: 249
![]() |
No bisognava partire da 0, sennò in effetti l'avrei dimensionato bene.
___________________________________
1 + 1 = 3, for large values of 1. |
![]() |
![]() |
![]() |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
|
|