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];
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
rennantf
lanlico já executei como você falou mas gera a exceção java.lang.NumberFormatException: For input string: “args0”
R
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.
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
rennantf
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
rennantf
Queria executar o programa sem gerar a exceção
R
rennantf
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.