Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142

    [Java] Errore vettore con metodi set e get

    Salve a tutti sto scrivendo un programma per la scuola e sono arrivato al punto che mi serve creare un vettore che contenga metodi set e get, quando compilo però ricevo un errore, mi spiego meglio, ho una classe nominata hard disk al cui interno ho inserito dei metodi set e get, poi ho creato la classe contenente il metodo main chiamata usaharddisk, al cui interno ho instanziato un oggetto di tipo hard disk come vettore visto che dovra contenere diversi hard disk:
    es.
    codice:
    vhd[nhd].setVelocita(6000);//dove nhd indica la grandezza del vettore
    System.out.println(vhd[nhd].getVelocita());
    mi restituisce il seguente errore:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at UsaHardDisk.main(UsaHardDisk.java:25)

    Spero che mi possiate aiutare grazie.

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    vhd avrà meno di sei elementi.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: [Java] Errore vettore con metodi set e get

    Originariamente inviato da Gybra
    Salve a tutti sto scrivendo un programma per la scuola e sono arrivato al punto che mi serve creare un vettore che contenga metodi set e get, quando compilo però ricevo un errore, mi spiego meglio
    ...
    mi restituisce il seguente errore:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
    at UsaHardDisk.main(UsaHardDisk.java:25)

    Spero che mi possiate aiutare grazie.
    L'errore è a runtime, non a compilazione!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    ok quindi come mi consigliate di risolvere questo problema??

  5. #5
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Dovresti postare tutto il codice.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da Gybra
    ok quindi come mi consigliate di risolvere questo problema??
    Se un vettore ha 6 elementi, non puoi chiedere vettore[6] perché non esiste... vanno da 0 a 5.
    Quindi richiedi gli elementi corretti del vettore e non avrai più quell'errore.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Gybra
    ok quindi come mi consigliate di risolvere questo problema??
    L'errore è abbastanza chiaro, stai cercando di accedere ad un vettore tramite un indice troppo grande Senza vedere il codice non possiamo dirti cosa sbagli di preciso... Azzardo un ipotesi: hai un ciclo for che va da i = 0 a i <= vhd.length?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    142
    ecco le due classi

    codice:
    public class HardDisk {
    	private int velocita;
    	private double taccesso;
    	private double capienza;
    	private String marca;
    	private String sigla;
    	
    	HardDisk(){
    		velocita = 0;
    		taccesso = 0;
    		capienza = 0;
    		marca = "";
    		sigla = "";
    	}
    	public void setVelocita(int v){
    	  velocita = v;
    	}
    	public int getVelocita(){
    	  return velocita;
    	}
    	public void setTaccesso(double t){
    	  taccesso = t;
    	}
    	public double getTaccesso(){
    	  return taccesso;
    	}
    	public void setMarca(String m){
    	  marca = m;
    	}
    	public String getMarca(){
    	  return marca;
    	}
    	public void setSigla(String s){
    	  sigla = s;
    	}
    	public String getSigla(){
    	  return sigla;
    	}
    	public void setCapienza(int c){
    	  capienza = c;
    	}
    	public double getCapienza(){
    	  return capienza;
    	}
    codice:
    import java.io.*;
    
    public class UsaHardDisk {
    	public static void main(String[] args) {
    		HardDisk vhd[];
    		HardDisk hd = new HardDisk();
    		int nhd = 0;
    		InputStreamReader isr;
    		BufferedReader br;
    		String s = null;
    		
    		try{
    		  isr = new InputStreamReader(System.in);
    		  br = new BufferedReader(isr);
    		  s = br.readLine();
    		  nhd = Integer.parseInt(s);
    		}
    		catch(Exception e){	
    		}
    		if(nhd < 5){
    		  System.out.println("Numero hard disk maggiore di 5");
    		}
    		vhd = new HardDisk[nhd];
    		
    	    vhd[nhd].setVelocita(6000);
    		System.out.println(vhd[nhd].getVelocita());
    		vhd[nhd].setTaccesso(1.2);
    		System.out.println(vhd[nhd].getTaccesso());
    		vhd[nhd].setMarca("maxtor");
    		System.out.println(vhd[nhd].getMarca());
    		vhd[nhd].setSigla("mx");
    		System.out.println(vhd[nhd].getSigla());
    		vhd[nhd].setCapienza(250);
    		System.out.println(vhd[nhd].getCapienza());
    		
            
    		vhd[nhd].setVelocita(7500);
    		System.out.println(vhd[nhd].getVelocita());
    		vhd[nhd].setTaccesso(2.3);
    		System.out.println(vhd[nhd].getTaccesso());
    		vhd[nhd].setMarca("samsung");
    		System.out.println(vhd[nhd].getMarca());
    		vhd[nhd].setSigla("sg");
    		System.out.println(vhd[nhd].getSigla());
    		vhd[nhd].setCapienza(125);
    		System.out.println(vhd[nhd].getCapienza());
    		
    		
    		vhd[nhd].setVelocita(6800);
    		System.out.println(vhd[nhd].getVelocita());
    		vhd[nhd].setTaccesso(1.8);
    		System.out.println(vhd[nhd].getTaccesso());
    		vhd[nhd].setMarca("Intel");
    		System.out.println(vhd[nhd].getMarca());
    		vhd[nhd].setSigla("il");
    		System.out.println(vhd[nhd].getSigla());
    		vhd[nhd].setCapienza(160);
    		System.out.println(vhd[nhd].getCapienza());
    		
    		
    		vhd[nhd].setVelocita(8500);
    		System.out.println(vhd[nhd].getVelocita());
    		vhd[nhd].setTaccesso(2.5);
    		System.out.println(vhd[nhd].getTaccesso());
    		vhd[nhd].setMarca("OCZ");
    		System.out.println(vhd[nhd].getMarca());
    		vhd[nhd].setSigla("oz");
    		System.out.println(vhd[nhd].getSigla());
    		vhd[nhd].setCapienza(500);
    		System.out.println(vhd[nhd].getCapienza());
    		
    		vhd[nhd].setVelocita(9640);
    		System.out.println(vhd[nhd].getVelocita());
    		vhd[nhd].setTaccesso(1.9);
    		System.out.println(vhd[nhd].getTaccesso());
    		vhd[nhd].setMarca("Philips");
    		System.out.println(vhd[nhd].getMarca());
    		vhd[nhd].setSigla("ps");
    		System.out.println(vhd[nhd].getSigla());
    		vhd[nhd].setCapienza(620);
    		System.out.println(vhd[nhd].getCapienza());
    	}
    
    }
    ecco il codice delle due classi ditemi con precisione l errore

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Leggi gli interventi sopra. Se un vettore ha una dimensione di N, allora gli indici vanno da 0 a N-1.
    Non puoi fare vettore[N] perché non esiste.

  10. #10
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Il problema è che stai inizializzando un array di n elementi e questo va da 0 fino a n-1. Dopo però stai accedendo n, che sia ovviamente fuori da n-1.
    Poi il codice non avrebbe tanto senso in genere, perchè anche con n-1 staresti usando sempre l'ultimo elemento e quindi non ci sarebbe bisogno di un array.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.