我创建了两个类
但我有问题
当我按下运行时,它显示我这个错误
----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.
线程“main”中的异常java.lang.NullPointerException<<我知道这是什么意思
但我不知道如何更正我的代码!
这是头等舱
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;
}
}
这是第二个
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));
}
}
}
答案 0 :(得分:2)
您在循环中递增i
两次:
for (int i = 0 ; i<10 ; i++){
array [i]= new circle (i++);
结果是您尝试访问数组中尚未初始化的圆圈(所有数组内容最初都指向NULL
)。我确定你的意思是写
for (int i = 0 ; i<10 ; i++){
array [i]= new circle (i + 1);
答案 1 :(得分:2)
您正在i
循环中递增for
并初始化每个圈子:
for (int i = 0 ; i<10 ; i++){
array [i]= new circle (i++);
当您输出圆圈时,您将引用未初始化的数组条目。
您需要删除其中一个:
for (int i = 0 ; i<10 ; i++){
array [i]= new circle (i+1);
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));
}
答案 2 :(得分:2)
这可能是您的解决方案:
class client{
public static void main (String args[]) {
circle c[] = new circle[10];
for (int i = 0 ; i<10 ; i++) {
c[i] = new circle(i + 1);
System.out.println("The area of the circle of radius "+ c[i].getradius()+"is" + c[i].area() + "and the circumference is" + c[i].circumference());
System.out.println(c[i].areas(35));
}
}
}
答案 3 :(得分:1)
因为这一行将i的值增加1.并且后面的行使用数组中的下一个空位置。
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());
答案 4 :(得分:1)
array [i]= new circle (i++);
你算上一个人了。但是下一个i值是null。
答案 5 :(得分:1)
问题在于这一行:
array[i] = new circle(i++);
您正在再次添加i + 1.
这样做:
array[i] = new circle(i);