Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    Problema ArrayIndexOutOfBoundsException

    Ciao a tutti
    so che l'eccezione ArrayIndexOutOfBoundsException avviene quando l'indice è negativo o maggiore o uguale alla dimensione della matrice.

    Nel mio caso, ho una stringa che vado a spezzettare e vado a mettere i vari elementi nell'array.
    Ho fatto così:
    codice:
     Registrazioni(String trim) {
    
            String[] parti = trim.split("\\s+");
    
           
    
            if (parti.length == 6) {
               
                Time tempo = new Time(parti[0]);
                
                this.irradianzaG = Integer.parseInt(parti[1]);
                System.out.print(irradianzaG + "\t");
                this.irradianzaGd = Integer.parseInt(parti[2]);
                System.out.print(irradianzaGd + "\t");
                this.irradianzaGc = Integer.parseInt(parti[3]);
                System.out.println(irradianzaGc);
            }
    
        }
    perchè so che la stringa ha effettivamente 6 elementi dei quali a me servono solo i primi 4.
    Se non inserisco questo controllo ovviamente mi da l'eccezione del arrayindexoutofbounds
    A questo punto vorrei prevedere che la stringa possa essere anche di 7 elementi o di 8 oppure di 9, ecc..
    come posso modificare il costrutto if per poter considerare gli altri casi ?
    Cioè vorrei recuperare il numero di parti in cui sarà suddivisa la stringa per poter effettuare il controllo con l'if e senza incappare nella eccezione
    Grazie
    Ultima modifica di roquentin; 17-09-2014 a 20:13

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Se usi solo i primi 4 elementi non c'è motivo di arrivare a 6 ti basta controllare se è maggiore o uguale a 4
    codice:
    if(parti.length >= 4){ /* ... */ }
    
    Ultima modifica di RoTeam; 17-09-2014 a 22:40

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da RoTeam Visualizza il messaggio
    Se usi solo i primi 4 elementi non c'è motivo di arrivare a 6 ti basta controllare se è maggiore o uguale a 4
    codice:
    if(parti.length >= 4){ /* ... */ }
    
    Ok benissimo.
    Come faccio a dirgli di leggere la string "trim" solo se non è empty ?

  4. #4
    codice:
    if(!stringa.equals("")){
       read(stringa.trim());
    Se posso permettermi penso che queste (operazioni sulle stringhe) siano le basi...

    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ok, grazie

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Ok benissimo.
    Come faccio a dirgli di leggere la string "trim" solo se non è empty ?
    si ma

    System.out.println( " ".isEmpty() );

    restituisce false, ma per te la riga è vuota. Quindi il trim lo devi fare prima del controllo.
    Ma come dice schumy2000 siamo alle basi della programmazione (non di java)
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da valia Visualizza il messaggio
    si ma

    System.out.println( " ".isEmpty() );

    restituisce false, ma per te la riga è vuota. Quindi il trim lo devi fare prima del controllo.
    Ma come dice schumy2000 siamo alle basi della programmazione (non di java)

    Scusa...non ricordavo il metodo "equals", comunque il controllo lo faccio qui:
    codice:
    while (linea != null && !linea.equals("")) {
                    Registrazioni registro = new Registrazioni(linea.trim());
                    registrazioni.add(registro);
                    linea = b.readLine();
                }
    prima di passare la stringa alla classe Registrazioni

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Scusa...non ricordavo il metodo "equals", comunque il controllo lo faccio qui:
    codice:
    while (linea != null && !linea.equals("")) {
                    Registrazioni registro = new Registrazioni(linea.trim());
                    registrazioni.add(registro);
                    linea = b.readLine();
                }
    prima di passare la stringa alla classe Registrazioni
    io ti ho scritto uno snippet, te non ci hai messo niente del tuo.
    Se la stringa è vuota e non fai trim nella condizione del while, quanto scommetti che dopo hai errore?
    Devi riflettere, ti stiamo dando snippet e aiuto, ma un po' del tuo ce lo devi mettere, altrimenti nella tesi metti il ns nome
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Scusa...non ricordavo il metodo "equals", comunque il controllo lo faccio qui:
    codice:
    while (linea != null && !linea.equals("")) {
                    Registrazioni registro = new Registrazioni(linea.trim());
                    registrazioni.add(registro);
                    linea = b.readLine();
                }
    prima di passare la stringa alla classe Registrazioni
    Di fatti non ho errore così, scusa se faccio il controllo in modo tale che ciclo itera finchè la stringa è !null e la stringa non sia una riga vuota, allora il ciclo itera solo con stringhe non vuote, di conseguenza trim() verrà applicata solo a stringhe non vuote e non null

  10. #10
    Ma scusate non c'era già la discussione su questo?
    Perché frammentare quella meravigliosa discussione/disquisione?
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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 © 2026 vBulletin Solutions, Inc. All rights reserved.