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

6 respostas Resolvido
programaçãojava
M
package com.arthurlmoreira.operators;

import java.util.Scanner;

abstract class Numbers {
	
	public double x;
	
	protected int b;
	
	protected  double a[] = new double[b];
	
	protected void oneNumber() {
		
		b = 1;
		
		Scanner in = new Scanner(System.in);
		
		System.out.print("Digite o único número: ");
		
		a[0] = in.nextDouble();
		
		
	}
	
	protected void twoNumbers() {
		
		b = 2;
		
		Scanner in = new Scanner(System.in);
		
		System.out.print("Digite o primeiro  número: ");
		
		a[0] = in.nextDouble();
		
		System.out.print("Digite o segundo número: ");
		
		a[1] = in.nextDouble();
		
		
	}
	
	protected void moreNumbers() {
		
		Scanner in = new Scanner(System.in);
		
		System.out.print("Digite quantos números a operação terá: ");
		
		b = in.nextInt();
		
		for(int i = 0; i < b; i++) {
			
			System.out.print("Digite o " + (i + 1) + "° número: ");
			
			a[i] = in.nextDouble();
			
			
		}
		
		
	}
	

}

6 Respostas

Rodrigo_Void

Posta o stacktrace pra ver em q linha q da o erro.
Mas basicamente o erro sgnifica q vc está acessando aquela posição ZERO que no caso não existe.
a[0] não é uma boa prática acessar posições desta forma, estaticamente. Se mesmo assim o fizeres, GARANTA que a posição vai existir.

M

at com.arthurlmoreira.operators.Numbers.moreNumbers(Numbers.java:55)

Rodrigo_Void
Solucao aceita

Poisé, está chamando este método mas seu vetor “a” é de tamanho zero, ou seja posição zero não existe.

staroski
protected int b;    // b não foi inicializado, então é zero
protected  double a[] = new double[b]; // agora o array a foi inicializado com tamanho zero


a[0] = in.nextDouble(); // se a tem tamanho zero, não  pra acessar nenhuma posição dele
M

Obrigado

M

Agradeço

Criado 30 de janeiro de 2019
Ultima resposta 1 de fev. de 2019
Respostas 6
Participantes 3