一、今日学习内容:
今天练习实验二的习题。
二、遇到的问题:
无。
三、明日计划:
明天练习实验三的习题。
今天学习的具体内容如下:
1.学生类。
定义一个学生类,设计私有数据成员:年龄 int age;姓名 string name;
共有成员函数:带参数的初始化函数 Input(int a, string str);获取数据成员函数 Output();在主函数中定义一个有3个元素的对象数组并分别输入,然后输出对象数组的信息。
public class student { private int age; private String name; public static void main(String []args) { int i; student []s= new student[3]; s[0]=new student(16,"小花"); s[1]=new student(17,"小黑"); s[2]=new student(14,"大明"); for(i=0;i<3;i++) { s[i].output(); } } student(int a,String str){ age=a; name=str; } public void output() { System.out.println("姓名:"+name); System.out.println("年龄:"+age); } }
测试截图:
2.点类
先定义一个点类,类名为point,将其坐标定义为私有成员,定义五个共有成员函数完成点的输入、输出、返回x坐标、返回y坐标和返回z坐标。在主程序中定义该类的一个对象,做到能够输入坐标,输出坐标,并且输出到原点的距离。
import java.lang.Math; import java.util.Scanner; public class point { private int x; private int y; private int z; public void setvalue(int a,int b,int c) { x=a; y=b; z=c; } public void output() { System.out.println("x="+x); System.out.println("y="+y); System.out.println("z="+z); } public int return_x() { return this.x; } public int return_y() { return this.y; } public int return_z() { return this.z; } public double length(point p) { double result; result=Math.sqrt(p.x*p.x+p.y*p.y+p.z*p.z); return result; } public static void main(String [] args) { System.out.println("请输入一个三维坐标点的值:"); Scanner sc=new Scanner (System.in); int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); point p1=new point(); p1.setvalue(a, b, c); System.out.println("x的值:"+p1.return_x()); System.out.println("y的值:"+p1.return_y()); System.out.println("z的值:"+p1.return_z()); p1.output(); double s=p1.length(p1); System.out.println("该点到原点的距离:"+s); } }
测试截图:
3.线段类
在实验任务二的基础上,构造线段类line,其中私有数据成员为两个point对象(线段的起始点和终点),一个共有函数输入两个point类型数据成员,一个共有函数计算线段的长度。在主函数中调用line的两个共有函数完成点的输入和线段长度的输出。
import java.lang.Math; import java.util.Scanner; public class point { protected int x; protected int y; protected int z; public void setvalue(int a,int b,int c) { x=a; y=b; z=c; } public void output() { System.out.println("x="+x); System.out.println("y="+y); System.out.println("z="+z); } public int return_x() { return this.x; } public int return_y() { return this.y; } public int return_z() { return this.z; } public double length(point p) { double result; result=Math.sqrt(p.x*p.x+p.y*p.y+p.z*p.z); return result; } public static void main(String [] args) { System.out.println("请输入一个三维坐标点的值:"); Scanner sc=new Scanner (System.in); int a=sc.nextInt(); int b=sc.nextInt(); int c=sc.nextInt(); point p1=new point(); p1.setvalue(a, b, c); System.out.println("x的值:"+p1.return_x()); System.out.println("y的值:"+p1.return_y()); System.out.println("z的值:"+p1.return_z()); p1.output(); double s=p1.length(p1); System.out.println("该点到原点的距离:"+s); System.out.println("\n请输入第一个坐标点:"); int a1=sc.nextInt(); int b1=sc.nextInt(); int c1=sc.nextInt(); System.out.println("\n请输入第二个坐标点:"); int a2=sc.nextInt(); int b2=sc.nextInt(); int c2=sc.nextInt(); line l=new line(); point p2=new point(); point p3=new point(); p2.setvalue(a1, b1, c1); p3.setvalue(a2, b2, c2); l.setvalie_p(p2, p3); l.length_line(p2, p3); } } class line extends point{ private point p1; private point p2; public void setvalie_p(point s1,point s2) { p1=s1; p2=s2; } public void length_line(point s1,point s2) { double result; result=Math.sqrt((s1.x-s2.x)*(s1.x-s2.x)+(s1.y-s2.y)*(s1.y-s2.y)+(s1.z-s2.z)*(s1.z-s2.z)); System.out.println("这两点间的距离为:"+result); } }
测试截图: