#java编程基础
以后会时常更新java编程题,分享所遇之难,答疑解惑,共同努力。
本关任务:编写一个Point类,有x、y两个属性。编写一个PointDemo类,并提供一个distance(Point p1,Point p2)方法用于计算两点之间的距离,实例化两个具体的Point对象并显示他们之间的距离。
解题思路
首先,需要编写两个类!注意!,之前因为自己对java并不深入了解,我就写了一个类,并放入主函数(其实答案是对的),但是评测出现问题,因为评测默认要编写两个类所以你要在两个不同的.java文件中编写。如下图
#代码部分
package step2;
class Point {
//第一个类Point 类
private Double x;
private Double y;
public Point() {
}
public Point(Double x, Double y) {
this.x = x;//此处必须要注意,this关键字
this.y = y;//下方附链接
}
public Double getX() {
return x;
}
public Double getY() {
return y;
}}
```
```
第二个类
import java.util.Scanner;//输入流
import java.math.*;//math库
import java.text.DecimalFormat;//保留小数
class PointDemo {
Point p1;
Point p2;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个点坐标:");
double x1 = scanner.nextDouble();
double y1 = scanner.nextDouble();
System.out.println("请输入第二个点坐标:");
double x2 = scanner.nextDouble();
double y2 = scanner.nextDouble();
Point p1 = new Point(x1, y1);
Point p2 = new Point(x2, y2);
PointDemo pd2= new PointDemo(p1,p2);
pd2.distance();
}
public void distance()
{
Double a=Math.sqrt(Math.abs(p1.getX()-p2.getX())*Math.abs(p1.getX()-p2.getX())+Math.abs(p1.getY()-p2.getY())*Math.abs(p1.getY()-p2.getY()));
DecimalFormat df1= new DecimalFormat("###.0");
System.out.println("两点之间的距离为:"+df1.format(a));
}
public PointDemo(Point p1, Point p2)
{
this.p1 = p1;
this.p2 = p2;
}
}
现在给出运行结果
#需要注意的问题
1.this关键字
当类的成员函数中参数或者是局部变量与类的属性同名时,类的属性会被覆盖,此时应用this关键字,调用函数所在对象的属性如this.x;
(1)this是当前对象引用的首地址,就是函数所在对象的首地址。
(2)只能放到成员变量或成员函数前方。
(3) 只能在函数中。
(4)实质上就是返回函数所在对象的首地址,然后调用对象的各个属性、函数。
2.this(**)
(1)用在构造函数中,且只能放在第一条语句,只能使用一次,用来调用与当前构造函数重载的,但是入口参数不同的构造函数。
(2)实质上就是放在构造函数的第一条语句,调用同一对象中的构造函数,完成重载。
3.super关键字
(1)super可理解为指向其最近父类的指针。
(2)super是其父类对象的首地址,可调用父类属性函数。
4.super(* *)
(1)调用父类的构造函数,通过传入不同参数完成父类构造函数的重载。
#结尾
软件工程在读,大一转专业,代码为原创,已调试保证正确,文末会总结每道题所遇到的问题,以及我们需要掌握的知识点,以后会实时更新,大家有啥问题随时交流。