各位大神,想问一下这段代码为什么运行出来的距离结果一直为零啊

echoccl 2021-04-09 07:35:05
package pro;

import pro.point.s;

class point {
double x,y;
point(){}
point(double x,double y){
this.x=x;
this.y=y;}
void show(){
System.out.println("("+x+","+y+")");
}
static class s {

point p1,p2;
double s;
s(){}
s(point p1,point p2){
this.p1=p1;this.p2=p2;
s = Math.sqrt((p1.x - p2.x) * (p1.x - p2.x)
+(p1.y-p2.y) * (p1.y-p2.y));

}
void show() {System.out.println(s);}
}
}

public class dian {
public static void main(String[] args){
s s1 =new s();
point p1=new point(2,3);
point p2=new point(2,5);
p1.show();
p2.show();
s1.show();
}
}
...全文
107 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
天行归来 2021-04-09
  • 打赏
  • 举报
回复
s s1 =new s(); ... s1.show(); 实例化 s1 的时候,并未调用传参构造函数,double s 则永为默认值0.

class point {
	double x, y;

	point() {
	}

	point(double x, double y) {
		this.x = x;
		this.y = y;
	}

	void show() {
		System.out.println("(" + x + "," + y + ")");
	}

	static class s {

		point p1, p2;
		double s;

		s() {
		}

		s(point p1, point p2) {
			this.p1 = p1;
			this.p2 = p2;
			s = Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));

		}

		void show() {
			System.out.println(s);
		}
	}

	public static void main(String[] args) {
		point p1 = new point(2, 3);
		point p2 = new point(2, 5);
		p1.show();
		p2.show();
		s s1 = new s(p1,p2);
		s1.show();
	}
}

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧