Erro ArrayIndexOutOfBoundsException: 0

19 respostas
R

Olá sou novo aqui no fórum. Estava testando um programa simples mas estou com problema neste trecho de código, gerando Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0 . Antes do trecho, há apenas o método main. Queria saber o que precisa ser feito para resolver esse problema.

int size = Integer.parseInt(args[0]); int nprod = Integer.parseInt(args[1]); int ncons = Integer.parseInt(args[2]); String message = args[3];

19 Respostas

Hebert_Coelho

Esse erro quer dizer que você está tentando acessar uma lista que está sem valor algum.

Ao chamar essa classe, você passou parâmetros?

R

Não passei parâmetros

R
public class ProducerConsumer {

  public static void main (String[] args) {
   
    int size = Integer.parseInt(args[0]);
    int nprod = Integer.parseInt(args[1]);
    int ncons = Integer.parseInt(args[2]);
    String message = args[3];
    BoundedBuffer b = new BoundedBuffer(size);

    for (int i = 0; i < nprod; i++)
      (new Producer(b, message)).start();
    for (int i = 0; i < ncons; i++)
      (new Consumer(b)).start();
  }
}
lanlico

Veja que você está utilizando um vetor de Strings no método main, é esperado que seja passado 0 ou mais parâmetros, como você não está passando nada e utilizando elementos desse vetor ele vai acusar um AIOOBE.

Experimente executar ele dessa forma:

java ProducerConsumer args0 args1 args2 args3

Hebert_Coelho

lanlico:
java ProducerConsumer args0 args1 args2 args3
Antes disso você precisa compilar compilar a classe com javac ProducerConsumer.java

lanlico

Antes de compilar você precisa baixar o Java na sua máquina. 8)

Hebert_Coelho

se ele estivesse sem o Java ele não teria o erro que teve.

Rodando por dentro do eclipse ele teria esse erro.

lanlico

Então vamos melhorar nossas respostas:

Run - Run Configurations - > Arguments

Hebert_Coelho

lanlico:
Então vamos melhorar nossas respostas:

Run - Run Configurations - > Arguments

melhor mesmo acho que vai ser esperar pela resposta dele.

R

lanlico já executei como você falou mas gera a exceção java.lang.NumberFormatException: For input string: “args0”

R

E ao passar número como parâmetros continua gerando exceção. Estou utilizando a IDE NetBeans mas já executei tanto pelo prompt como pela IDE.

lanlico

NumberFormatException é porque o argumento de posição 0 não pode ser convertido em um inteiro (no seu caso).

Verifica se o que você está passando é algo como “12” “13” e não “doze” “treze”.

A JVM não entende esse tipo de conversão e lança uma exceção em tempo de execução.

Hebert_Coelho

rennantf:
E ao passar número como parâmetros continua gerando exceção. Estou utilizando a IDE NetBeans mas já executei tanto pelo prompt como pela IDE.
Note que seus 3 primeiros valores tem que ser numeros e o ultimo um texto.

então você teria que chamar com algo do tipo

1 2 3 oi

R

Certo. Continua gerando AIOOBE mesmo passando os parâmetros como você informou.

Hebert_Coelho

rennantf:
Certo. Continua gerando AIOOBE mesmo passando os parâmetros como você informou.
E qual o problema disso?
Estamos resolvendo seu problema de exceção. Essa era sua reclamação uai! O.o

R

Queria executar o programa sem gerar a exceção

R

Tinha colocado poucos parâmetros. Ao colocar 4 consigo testar o programa.

Hebert_Coelho

rennantf:
Tinha colocado poucos parâmetros. Ao colocar 4 consigo testar o programa.
Opa, maravilha. [=

Boa sorte aí. [=

R

Obrigado pela ajuda.

Criado 10 de fevereiro de 2013
Ultima resposta 11 de fev. de 2013
Respostas 19
Participantes 3