Estou tendo um problema em um programa Java. Exceção em thread "main"
java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1
é o erro que a I'm está a receber. Dava-me mesmo jeito alguma ajuda, já que estou preso horas neste local...
package twoten;
import java.util.Scanner;
public class TwoTenB {
public TwoTenB() {
double percentage;
double a[] = null;
double total = 0;
double var;
System.out.print("\tRESULT\n\n");
Scanner scan = new Scanner(System.in);
//double[] mark = new double[7];
for (int i = 0; i < 7; i++) {
System.out.print("\nMarks in subject " + (i + 1) + "\t:\t");
var = scan.nextDouble();
a[i] = var;
total = total + a[i];
//percentage = first * second * third * fourth * fifth * sixth * seventh * 100 / 700;
}
percentage = total * 100 / 700;
if (a[0] > 35 && a[1] > 35 && a[2] > 35 && a[3] > 35 && a[4] > 35 && a[5] > 35 && a[6] > 35 && percentage > 35) {
if (percentage >= 60) {
System.out.print("\nCongratulation!!! you've got FIRST dividion\n");
} else if (percentage >= 45 && percentage < 60) {
System.out.print("\nCongratulation!!! you've got SECOND dividion\n");
} else if (percentage >= 35 && percentage < 45) {
System.out.print("\nCongratulation!!! you've got THIRD dividion\n");
}
} else {
System.out.print("\nSORRY!!! you've FAILED\n");
}
}
}
Este é o problema.
double a[] = null;
Como a' é
nulo', `NullPointerException' irá surgir toda vez que você utilizá-lo até que você o inicialize. Então isto:
a[i] = var;
vai falhar.
Uma possível solução seria inicializá-la ao declará-la:
double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7
IMO mais importante do que resolver esta exceção, é o fato de que você deve aprender a ler o stacktrace e entender o que ele diz, para que você possa detectar os problemas e resolvê-los.
java.lang.NullPointerException
Esta exceção significa que há's uma variável com valor 'nulo' sendo utilizada. Como resolver? Apenas certifique-se de que a variável não é `nula' antes de ser utilizada.
em twoten.TwoTenB.
(TwoTenB.java:29)
Esta linha tem duas partes:
<init>
method na classe TwoTenB
declarada no pacote twoten
. Quando você encontra uma mensagem de erro com SomeClassName.<init>
, significa que o erro foi lançado durante a criação de uma nova instância da classe, por exemplo, executando o construtor (neste caso, esse parece ser o problema).a[i] = var;
.A partir desta linha, outras linhas serão semelhantes para lhe dizer onde o erro surgiu. Então, ao ler isto:
em javapractice.JavaPractice.main(JavaPractice.java:32)
Isso significa que você estava tentando instanciar uma referência de objeto doisTenB
dentro do método main
da sua classe JavaPractice
declarada no pacote javapractice
.