ورود

View Full Version : سوال: مشكل در كد



amatur_barnamenevis
جمعه 03 تیر 1390, 11:24 صبح
سلام به دوستان
ايراد اين قطعه كد چيه؟
public class Point {
private int x;
private int y;
public Point(){
}
public double distance(Point p)
{
int d =(x - p.x)* (x-p.x) + (y-p.y)*(y-p.y);
return Math.sqrt(d);
}
public void printMe(){
System.out.println("(" + x + "," + y + ")");
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public static void main(String[] args) {
Point [] p = new Point[3];
for (int i = 1; i <= p.length(); i++) {
p[i-1].setX(i * 2);
p[i-1].setY(i * 5);
p[i-1].printMe();
System.out.println(p[i-1].distance(p[0]));
}
}
}

javaphantom
جمعه 03 تیر 1390, 15:46 عصر
سلام به دوستان
ايراد اين قطعه كد چيه؟
public class Point {
private int x;
private int y;
public Point(){
}
public double distance(Point p)
{
int d =(x - p.x)* (x-p.x) + (y-p.y)*(y-p.y);
return Math.sqrt(d);
}
public void printMe(){
System.out.println("(" + x + "," + y + ")");
}
public void setX(int x) {
this.x = x;
}
public void setY(int y) {
this.y = y;
}
public static void main(String[] args) {
Point [] p = new Point[3];
for (int i = 1; i <= p.length(); i++) {
p[i-1].setX(i * 2);
p[i-1].setY(i * 5);
p[i-1].printMe();
System.out.println(p[i-1].distance(p[0]));
}
}
}

قبل از اینکه حلقه for اول رو اجرا کنی و بعد از اینکه از کلاس Point به نام p یک آرایه به طول ۳ گرفتی یک حلقه بنویس که از p ۰ تا p 3 برات یک بار instance بگیره. چون قبلش کلاسهای p تو instance گرفته نشده. برای همین null pointer exception می گیری

amatur_barnamenevis
جمعه 03 تیر 1390, 17:54 عصر
يعني چي instance ؟ مگه همون خط 21 Instance نساخته؟؟

javaphantom
جمعه 03 تیر 1390, 22:44 عصر
يعني چي instance ؟ مگه همون خط 21 Instance نساخته؟؟

instance یعنی new کردن


for (int i=0; i<3; i++) {
p[i] = new Point();
}

قبل for ی که خودت نوشتی باید این کار رو بکنی