wie kann ich das Problem lösen Exception in thread "main" java.lang.NullPointerException
Ich habe zwei Klasse
aber ich habe ein problem
wenn ich drücken Sie ausführen, es zeigt mir diesen Fehler
----jGRASP exec: java client
Exception in thread "main" java.lang.NullPointerException
at client.main(client.java:7)
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
Exception in thread "main" java.lang.NullPointerException << ich weiß, was das zu bedeuten
aber ich weiß nicht, wie kann ich richtige mein code !
dies ist in der ersten Klasse
class circle{
private double radius;
static int count=0;
public circle(){
radius=8.9;
}
public circle(double r){
radius=r;
count++;
}
public void setradius(double r){
radius = r;
}
public double getradius(){
return radius;
}
public double area (){
double area1 = (radius*radius*(Math.PI));
return area1;
}
public double circumference(){
double circumference1 = (Math.PI)*radius;
return circumference1;
}
public static double areas(double r){
double area2 = (r*r*(Math.PI));
return area2;
}
}
- und dies ist die zweite
class client{
public static void main (String args[]){
circle array[] = new circle [10];
for (int i = 0 ; i<10 ; i++){
array [i]= new circle (i++);
System.out.println("The area of the circle of radius "+ array[i].getradius()+"is" + array[i].area() + "and the circumference is" + array[i].circumference());
System.out.println(circle.areas(35));
}
}
}
- Was ist in Zeile 7 ?
- einer der beiden Sysouts, denke ich
- Linie 7 in der Klasse client
- benutze ich anstelle von i++, weil es Inkrement von i um 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie Inkrementieren
i
zweimal in der Schleife:Das Ergebnis ist, dass Sie versuchen, Zugriff auf einen Kreis in der array noch nicht initialisiert ist (alle array-Inhalte zeigen zu
NULL
zunächst). Ich bin mir sicher, dass du meinst zu schreibenSind Sie Inkrementieren
i
imfor
Schleife und die Initialisierung jeder Kreis:Wenn Sie gehen, um die Ausgabe der Kreis-Sie werden dann auf eine uninitialised array-Eintrag.
Müssen Sie eines der folgenden:
Könnte dies Ihre Lösung:
new circle(i + 1);
Weil diese Zeile nimmt den Wert von i um 1. Und der Reihe nach wird mit der nächsten position im array ist leer.
zählen Sie ich ein. Aber die nächste i-Wert null ist.
Das problem mit dieser Zeile:
Den Sie hinzufügen, i + 1 wieder.
Nur dazu: