Arrays

2 respostas
E

Olá pessoal, boa noite !

Estou aprendendo java sozinho em casa, e estou com um problema no aprendizado de array bidimenssional. Está dando o seguinte erro:

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 20
at testes.MilNumeros.main(MilNumeros.java:27)

ele consegue gerar alguns números, mas dá esse erro. Abaixo segue código para análise.

package testes;

import java.util.Random;
import javax.swing.JOptionPane;

/**
*

  • @author Eu
    */
    public class MilNumeros {

    public static void main(String[] args){

    int numero [][] = new int[50][20];

    for(int x = 0; x <= 999; x++){
    for(int y = 0; y <= 999; y++){

    int nume = (int)(Math.random()*999);
        
        numero[x][y] = nume;                           // A linha que ocorre o erro
        System.out.println(numero[x][y]);
    
    }
    
    }
    
    }
    
    }
    

agradeço pela ajuda da comunidade, e fico grato pela atenção.

2 Respostas

asousaj

Primeiramente, bem vindo ao GUJ.

Tá dando erro pois quis colocar um int[1000][1000] em um int[50][20].
Pelo nome da classe acho que a ideia é printar mil números.

Teste assim:
public class MilNumeros {

	public static void main(String[] args) {
		int count = 0;
		int numero[][] = new int[50][20];

		for (int x = 0; x < 50; x++) {
			for (int y = 0; y < 20; y++) {

				int nume = (int) (Math.random() * 999);
				numero[x][y] = nume;
				System.out.println(numero[x][y]);

				count++;
			}
		}
		System.out.println("Total de numeros exibidos:" + count);
	}
}

Aproveite e leia o guia do iniciante, no link abaixo, atenção para a explicação de como usar as tags [ code ] [ / code ], assim ajuda aos demais usuários a ler o código:
Não deixe de ler: http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

regis_hideki
asousaj:
Primeiramente, bem vindo ao GUJ.

Tá dando erro pois quis colocar um int[1000][1000] em um int[50][20].
Pelo nome da classe acho que a ideia é printar mil números.

Teste assim:
public class MilNumeros {

	public static void main(String[] args) {
		int count = 0;
		int numero[][] = new int[50][20];

		for (int x = 0; x < 50; x++) {
			for (int y = 0; y < 20; y++) {

				int nume = (int) (Math.random() * 999);
				numero[x][y] = nume;
				System.out.println(numero[x][y]);

				count++;
			}
		}
		System.out.println("Total de numeros exibidos:" + count);
	}
}

Aproveite e leia o guia do iniciante, no link abaixo, atenção para a explicação de como usar as tags [ code ] [ / code ], assim ajuda aos demais usuários a ler o código:
Não deixe de ler: http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Além disso, poderia usar a propriedade "length" ao invés de constantes. Assim, se a matriz mudar de tamanho, o código não quebra:

for (int x = 0; x < numero.length; x++) {
	for (int y = 0; y < numero[x].length; y++) {
        //restante do código
       }
}
Criado 18 de dezembro de 2013
Ultima resposta 20 de dez. de 2013
Respostas 2
Participantes 3