Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

aew galera blz?

to tendo um probleminha q ja ta me dxando maluco
pelo que li em outros tópicos meu vetor está “estourando”
aparece o erro Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0
e já fui la em Propriedades -> run e ja coloquei alguns arguments e essa coisa continua dando erro
ja rodei no modo debug e lá aparece 1 String atribuida na possição 0 então porque continua dando esse erro???

se alguem puder ajudar… segue o código:

[code]public class Pessoa {

public Pessoa() {
}

static String inverso(String string) {
    String palavra = "";
    char arrayChar[] = string.toCharArray();
    for (int i = arrayChar.length - 1; i >= 0; i--) {
       palavra += String.valueOf(arrayChar[i]);

   }
   return palavra;
}
public static void main(String[] frase) {
    new Pessoa();
    for (int i = 0; i == frase.length; i++) {
        System.out.println(Pessoa.inverso(frase[i]));
    }
   // System.out.println(Pessoa.inverso("Trabalho de Inversão de Strings"));        
}

}[/code]

Como a primeira posição dos vetores são 0 e não 1, o contador só pode ir até o tamanho do vetor - 1, sacou?

for (int i = 0; i < frase.length; i++) {  
            System.out.println(Pessoa.inverso(frase[i]));  
}

outra coisa, parece que os parâmetros pro seu programa não estão sendo passados corretamente porque ele não está conseguindo acessar a posição 0!

só por curiosidade…
por que você instanciou uma nova pessoa no método main? Ainda mais sem atribuir a referência para esse objeto em nenhuma variável?

[]'s

jhonatandarosa,

ignora essa criação rsrs só por mera didadica tem função alguma =)

e foxpv,

não sakei =X

ele ta iniciando em 0 … c rodo o debug? pode ver la
ele atribui 1 argumento a posição 0 mas pq ele estora o vetor então??

n consigo entender --’

soh axo que sakei =)

errinho besta falto por o -1 --’

valeu ai galera brigadao!

mais uma perguntinha…

você está passando parâmetros para a o método main na hora que vai executar??

e só para esclarecer…

Veja:

for(int i=0; i == frase.length ; i++){
   //faz qualquer coisa
}

se frase.length for diferente de zero, ele não executará nada, pois você quer que execute o loop no for até que i seja igual a frase.length, então, como i começa com 0, se o array estiver vazio, ele entrará no for, porém acontecerá o erro ArrayIndexOutOfBounds pq o array está vazio!

Veja:

for(int i=0; i < frase.length ; i++){
   //faz qualquer coisa
}

Note que agora, o operador foi trocado, então dessa forma, você quer que execute o for, enquanto i é menor que o tamanho do array.
Porque < e não <=?
Em java, os índices começam com 0, e não com 1. portanto deve ser menor, e não menor igual, pois quando o valor for igual, já estará fora dos limites do array.
Por exemplo se a palavra Teste estivesse em um array de caracteres.

//A palavra teste tem 5 letras, portanto o array tem 5 posições
char[] array = new char[5];

array[0] = 'T';
array[1] = 'e';
array[2] = 's';
array[3] = 't';
array[4] = 'e';

entendeu? =)

[]'s