Discussione: Problema nel vettore
View Single Post
Old 15-07-2005, 06:52   #2
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Ci sono due problemi nel tuo codice:

1 - Innanzitutto, passi al costruttore Autocarri(int i) un parametro che poi non usi da nessuna parte: forse intendevi scrivere Autocarri(int N).

2 - Poi c'è un problema più di fondo: quando tu, nella classe TestAutocarri, crei un'istanza della tua classe Autocarri, il primo metodo invocato è ovviamente il costruttore, che inizializza il vettore V alla dimensione specificata; poi, quando invochi Inserimento, richiedi all'utente il valore di N (che hai già scelto tu!): l'utente deve perciò "indovinare" il valore che tu hai scritto nel codice (10 in questo caso): se ne sceglie uno più piccolo, riempirà solo un po' il vettore, se ne sceglie uno più grande il programma andrà in errore con un IndexOutOfBound (o qualcosa di simile ) exception (che tu non vedi perchè non fai nulla nella catch).

Magari la tua è una scelta voluta: impostare 10 come lunghezza massima e lasciare scegliere l'utente, male che vada imposterà un valore più alto e finirà intrappolato nella catch: però in questo caso sarebbe forse meglio gestire l'errore, visto che è così semplice. Basta un

Codice:
if (N <= this.N) {
                           // tua esecuzione
else {
                          System.out.println("Superato il massimo numero di elementi consentito. N deve essere minore o uguale a " + this.N);
}
o qualcosa di simile...
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso