Como coloco isso p/ funcionar?

4 respostas
fiabani

pessoal, isso ai em baixo compila blz, porém dá pau na hora de rodar.

import java.util.*;
import java.io.File;
import javax.swing.JOptionPane;

public class ExibeDiretorio{

	public static String msg = "";
	
	public static void list(String dir){
		File[] arquivo = new File(dir).listFiles();
		for(int i=0 ; i&lt=arquivo.length ; i++){
			msg += arquivo[i].toString();
		}
	    
		 JOptionPane.showMessageDialog(null, "Arquivos em "+dir+"\n\n"+msg);
	}

	public static void main(String args[]){
		String dir = JOptionPane.showInputDialog("Insira o diretório:");
		list(dir);
	}
}
na tela aparece o showInputDialog e logo após dá esse erro e para tudo:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 49
	at ExibeDiretorio.list(ExibeDiretorio.java:12)
	at ExibeDiretorio.main(ExibeDiretorio.java:20)

obrigado, t+

4 Respostas

diego2005

Não é <= no loop, é apenas <, assim:

for(int i = 0 ; i < arquivo.length; i++){ msg += arquivo[i].toString(); }

T+

fiabani

muito obrigado Diego2005, mas porque &lt e não &lt= ???
valew, t+

diego2005

Porque arrays em Java iniciam no índice 0 e vão até length - 1, por exemplo, um array de 5 elementos, seus índices são:

int[] x = new int[5]; x[0] = 1; // elemento 1 x[1] = 2; // elemento 2 x[2] = 3; // elemento 3 x[3] = 4; // elemento 4 x[4] = 5; // elemento 5

T+

diego2005

Ou então você pode fazer assim:

import java.io.File;

public class Teste {
    public static void main(String[] args) {
        File[] lista = new File("C:\").listFiles();

        for(File s : lista) {
            System.out.println(s);
        }	
    }
}

T+

Criado 11 de agosto de 2007
Ultima resposta 11 de ago. de 2007
Respostas 4
Participantes 2