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"));
}
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';