Problema Exception

di il
2 risposte

Problema Exception

Salve a tutti avrei un piccolo problema con questo programma
package progetto;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

public class programma {

	public void start ()
	{
		Ricercatore r = new Ricercatore();
		HashMap<String, Integer> m = new HashMap<String, Integer>();
		ArrayList<String[]> Libri = new ArrayList<String[]>();
		String[] listaFile = new String[1000];
		System.out.println("1. Inserisci il campo di ricerca;");
		System.out.println("2. Interrogazione singolo termine - risultati non ordinati");
		System.out.println("3. Interrogazione singolo termine - risultati ordinati");
		System.out.println("4. Interrogazione termini multipli - risultati non ordinati");
		System.out.println("5. Interrogazione termini multipli - risultati ordinati");
		System.out.println("6. Esci");
		int i;
		String line = new String();
		line = Console.readString();
		i = Integer.parseInt(line);
		if (i>5)
			{System.out.println("Non ci sono più di 5 punti");
			 start();
			}
		else if (i==1)
		{
			String pat = Console.readString("Inserisci il percorso");
			File f = new File(pat);
			listaFile = f.list();
			leggi l = new leggi();
			for (int j=0; j < listaFile.length ; j++)
			 {
				//System.out.println(listaFile[j]);
				l.lettura(listaFile[j], Libri.get(j));
			 }
		}
		
		else if (i==2)
		{
			if(Libri.isEmpty())
				{System.out.println("Devi prima inserire il campo di ricerca");start();}
			String parola = Console.readString("Inserisci la parola che vuoi cercare");
			for (int j = 0 ; j <= Libri.size() ; j++)
			{
				if (r.cercaSingoloTermine(Libri.get(j), parola))
					m.put(listaFile[j], 1);
			}
			System.out.println(m);
		}
	}
}
quando lo faccio partire e scelgo l'opzione 1 sulla console mi esce Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at progetto.programma.start(programma.java:38)
at progetto.inizio.main(inizio.java:8)

qualcuno saprebbe dirmi come faccio a risolvere il problema e da cosa dioende?

2 Risposte

  • Re: Problema Exception

    Ciao, guardando il tuo codice, tu hai si istanziato un ArrayList di String[], ma questa lista è vuota(size=0), dal momento che non ha nessun elemento se tenti di accedere con il metodo get ottieni giustamente un IndexOutOfBoundsException
  • Re: Problema Exception

    veget88 ha scritto:


    Salve a tutti avrei un piccolo problema con questo programma
    package progetto;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.HashMap;
    
    public class programma {
    
    	public void start ()
    	{
    		Ricercatore r = new Ricercatore();
    		HashMap<String, Integer> m = new HashMap<String, Integer>();
    		ArrayList<String[]> Libri = new ArrayList<String[]>();
    		String[] listaFile = new String[1000];
    		System.out.println("1. Inserisci il campo di ricerca;");
    		System.out.println("2. Interrogazione singolo termine - risultati non ordinati");
    		System.out.println("3. Interrogazione singolo termine - risultati ordinati");
    		System.out.println("4. Interrogazione termini multipli - risultati non ordinati");
    		System.out.println("5. Interrogazione termini multipli - risultati ordinati");
    		System.out.println("6. Esci");
    		int i;
    		String line = new String();
    		line = Console.readString();
    		i = Integer.parseInt(line);
    		if (i>5)
    			{System.out.println("Non ci sono più di 5 punti");
    			 start();
    			}
    		else if (i==1)
    		{
    			String pat = Console.readString("Inserisci il percorso");
    			File f = new File(pat);
    			listaFile = f.list();
    			leggi l = new leggi();
    			for (int j=0; j < listaFile.length ; j++)
    			 {
    				//System.out.println(listaFile[j]);
    				l.lettura(listaFile[j], Libri.get(j));
    			 }
    		}
    		
    		else if (i==2)
    		{
    			if(Libri.isEmpty())
    				{System.out.println("Devi prima inserire il campo di ricerca");start();}
    			String parola = Console.readString("Inserisci la parola che vuoi cercare");
    			for (int j = 0 ; j <= Libri.size() ; j++)
    			{
    				if (r.cercaSingoloTermine(Libri.get(j), parola))
    					m.put(listaFile[j], 1);
    			}
    			System.out.println(m);
    		}
    	}
    }
    quando lo faccio partire e scelgo l'opzione 1 sulla console mi esce Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at progetto.programma.start(programma.java:38)
    at progetto.inizio.main(inizio.java:8)

    qualcuno saprebbe dirmi come faccio a risolvere il problema e da cosa dioende?

    Ciao,
    nel codice tu dichiari:
    ArrayList<String[]> Libri = new ArrayList<String[]>();
    poi:
    
                          else if (i==1)
    		{
    			String pat = Console.readString("Inserisci il percorso");
    			File f = new File(pat);
    			listaFile = f.list();
    			leggi l = new leggi();
    			for (int j=0; j < listaFile.length ; j++)
    			 {
    				//System.out.println(listaFile[j]);
    				l.lettura(listaFile[j], Libri.get(j));
    			 }
    		}
    
    
    quando utilizzi Libri.get(j), l'oggetto ha una size()=0, è normale l'eccezione che ricevi....
    stai cercando di recuperare un j-esimo oggetto su un ArrayList vuoto.
Devi accedere o registrarti per scrivere nel forum
2 risposte