Ajuda com matriz

3 respostas
Maicon_Henrrique

Entao, to fazendo o seguinte exercicio

  1. Faça um programa que receba 10 valores inteiros e os coloque em um vetor. Em seguida exiba-os em
    ordem inversa à ordem de entrada.

Ta bom, nao sou mt experiente então fui criar o codigo
Eis aqui ele :

import java.util.Scanner;
      public class Ex10 {
	  int value;

	public static void main(String[] args) {
		Scanner read = new Scanner(System.in);
		Ex10[] nums = new Ex10[10];
		System.out.println ("Digite o primeiro valor :");
		nums[0].value = read.nextInt();		
		System.out.println ("Digite o segundo valor :");
		nums[1].value = read.nextInt();
		System.out.println ("Digite o terceiro valor :");
		nums[2].value = read.nextInt();
		System.out.println ("Digite o quarto valor :");
		nums[3].value = read.nextInt();
		System.out.println ("Digite o quinto valor :");
		nums[4].value = read.nextInt();
		System.out.println ("Digite o sexto valor :");
		nums[5].value = read.nextInt();
		System.out.println ("Digite o sétimo valor :");
		nums[6].value = read.nextInt();
		System.out.println ("Digite o oitavo valor :");
		nums[7].value = read.nextInt();
		System.out.println ("Digite o nono valor :");
		nums[8].value = read.nextInt();
		System.out.println ("Digite o décimo valor :");
		nums[9].value = read.nextInt();
		System.out.println ("");
		System.out.println ("Invertendo Ordem..");
		System.out.println ("");
		System.out.println (nums[9].value);
		System.out.println (nums[8].value);
		System.out.println (nums[7].value);
		System.out.println (nums[6].value);
		System.out.println (nums[5].value);
		System.out.println (nums[4].value);
		System.out.println (nums[3].value);
		System.out.println (nums[2].value);
		System.out.println (nums[1].value);
		System.out.println (nums[0].value);
		System.out.println ("");
		System.out.println ("Final da execução");
	}

}

No eclipse quando vou executar da o seguinte erro :

Digite o primeiro valor :
58
Exception in thread "main" java.lang.NullPointerException
	at Ex10.main(Ex10.java:11)

Não consegui pegar o erro…
Então outrora, voces poderiam me dar um exemplo de como fazer um codigo mais simples pra essa tarefa…
Achei mt extenso… creio que há outro modo de fazer
OUTRA VEZ, Muito obrigado galera!

3 Respostas

matheuslmota

Cara, quando tu cria um novo vetor, todas as suas posições recebem valor nulo por default.

Ex10[] nums = new Ex10[10];

Nesse ponto, todas as posições do vetor Ext10 são nulas.
Então, quando tu chama, por exemplo, Ext10[0].value, tu tá chamando a variável value de um objeto nulo, isso dispar a exceção NullPointerException. Outra coisa, estude o laço for, porque com esse laço você faria esse seu programa com menos de 10 linhas. E também nem precisave ter criado uma classe para fazer isso.
Abs.

drsmachado

Isto

Ex10[] nums = new Ex10[10];

Não cria um array com 10 ex10.
Esta linha apenas diz à JVM que precisará alocar 10 espaços na memória, para que, você insira os 10 Ex10.
Para que isso seja resolvido, eu faria com for

Ex10[] nums = new Ex10[10];
for(int x = 0; x < 10; x++){
Ex10 exTmp = new Ex10();
        System.out.println ("Digite o "+x+"º valor :");  
        exTmp.value =  read.nextInt();
        nums[x].value =exTmp;
}

Para apresentar, apenas faria um for decrescente.

R

E ai cara, coloca dois for um para pegar o valor e outro para imprimilo na tela,
tenta usar o Joptionpane fica mais legal para pegar os valores tambem
flw ae

Criado 3 de julho de 2011
Ultima resposta 3 de jul. de 2011
Respostas 3
Participantes 4