Erro em receber dados FLOAT

5 respostas
C

Não sei o que acontece... ms quando eu vou entrar com dados do tipo FLOAT ele ta o seguinte erro:

Exception in thread "main" java.lang.NullPointerException
at Faculdade.main(faculdade.java:62)

mas nao entendo... a linha 62 eh essa:
pessoa.notaMateria[cont] = Float.parseFloat(key.readLine());

o q eu quero eh jogar em um array as notas da faculdade e sao varias, mas como eh numero quebrado precisa ser do tipo FLOAT. o codigo eh basicamente esse:

class Faculdade{
	public static void main(String args[]) throws IOException{
			BufferedReader key = new BufferedReader(new InputStreamReader(System.in));

		Notas pessoa = new Notas();

..
..  //as coisas daqui nao tem nada haver.
..

				for (int cont=0; cont < pessoa.Materias.length; cont++){
				System.out.println("Digite a nota de: "+pessoa.Materias[cont]);
				pessoa.notaMateria[cont] = Float.parseFloat(key.readLine());
				}

e aqui está a CLASSE aonde está declarado as duas variaveis desse laço

class Aluno{
	String Nome, Curso;
	int RA;

	String Materias[] = {"Calculo","Programação","Fisica","S.O.II","Sociologia","Analise"};
	float notaMateria[];

}

eu ainda tenho uma outra CLASSE chamada 'NOTAS' que tem um extends para a CLASSE 'ALUNO', por isso meu objeto eh do tipo NOTAS()

Se algum puder me dar um help eu agradeço...
abraços!!!

5 Respostas

B

Olá, cara, pelo que deu pra notar dfe orelhada aqui é simples, o problema não é quando vc vai tentar inserir um novo Float, mas o array de notaMateria não foi inicializado, então quando vc tenta fazer:

pessoa.notaMateria[cont] = Float.parseFloat(key.readLine());

gera o null pointer.

mas se não for isto, se puder postar o stacktrace, junto com os codigos ai, eu posso ajudar melhor…

R

kra…eu não conheço muito sobre java…to entrando agora…mais me diz…
qdo vc digitou no class

pessoa.notaMateria[cont] = Float.parseFloat(key.readLine());

pessoa…naum deveria ser Aluno onde notaMateria[] foi criado?

B

Olá, a resposta é sim, mas quando vc simplesmente declara

float notaMateria[];

não quer dizer que vc pode fazer:

pessoa.notaMateria[cont] pq este array ainda não foi dimensionado, assim por dizer… vc precisa dizer a ele qual o seu tamanho, tipo

pessoa.notaMateria = new float[5]
entendeu, o que tá ocorrendo e que só declarar ela, como vc fez, o java cria, mas iguala ele a null, quando vc tenta acessar ele assim:

pessoa.notaMateria[cont]dá null pointer pq esta posição, cont, não existe…

C

eh verdade bruno…
eu sou novo no JAVA e por isso ainda me esqueço de determinadas coisas…

agora eu inicializei o meu array assim:

float notaMateria[] = new float[Materias.length];

somente para essa variavel nova ficar exatamente o mesmo tamanho do numero de materias…

valeu cara… obrigado pela dica!!
abraços!

:eek: :grin:

B

tranq, precisando estamos aqui.

Criado 21 de março de 2005
Ultima resposta 21 de mar. de 2005
Respostas 5
Participantes 3