我们都知道C/C++里面的结构体在储存数据的时候很方便,但是在Java中没有Struct,但是我们可以用类来实现Struct的功能
与Struct声明功能一样的类的定义:
public class platform
{
private int x;//平台左端的位置
private int y;//平台右边的位置
private int h;//平台离地面的高度
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
}
使用上面类的类:
public class Test10_4 {
private static final int INFINITE = 1000000000;// 对于该题相当于无穷大
private static int n;// 平台的个数
private static platform[] pf ;// 保存所有平台
private static int max;// 能降落的最大高度
private static int[] aLeftMinTime;// 保存从每个平台左端到地面的最短时间
private static int[] aRightMinTime;// 保存从每个平台右端到地面的最短时间
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
pf=new platform[n+1];
/* 开始的位置也看做是一个平台*/
int m = sc.nextInt();
platform p=new platform();//在给pf[]数组赋值的时候,需要先声明一个对象,然后再将对象赋值给数组,否则访问数组时会出现空指针错误。
p.setX(m);
p.setY(m);
p.setH(sc.nextInt());
pf[0]=p;
max = sc.nextInt();
// 给各个平台的数据赋值
for (int i = 1; i <= n; i++) {
p=new platform();
p.setX(sc.nextInt());
p.setY(sc.nextInt());
p.setH(sc.nextInt());
pf[i]=p;
}
}
}
上面的类分别对三个私有变量(private)写了set和get方法,在访问私有变量的时候可以调用函数来访问,同时如果将变量声明为公有变量(public)不用为公有变量写set和get方法,直接用对象.变量名来访问即可。
该类可以写在用到该类的类的外边,也可以写成内部类。
import java.util.*;
public class Test10_4 {
public class platform
{
public int x;//平台左端的位置
private int y;//平台右边的位置
private int h;//平台离地面的高度
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
}
private static final int INFINITE = 1000000000;// 对于该题相当于无穷大
private static int n;// 平台的个数
private static platform[] pf ;// 保存所有平台
private static int max;// 能降落的最大高度
private static int[] aLeftMinTime;// 保存从每个平台左端到地面的最短时间
private static int[] aRightMinTime;// 保存从每个平台右端到地面的最短时间
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
pf=new platform[n+1];
/* 开始的位置也看做是一个平台*/
int m = sc.nextInt();
//内部类对象的生成方法
Test10_4 t=new Test10_4();
Test10_4.platform p=t.new platform();
p.setX(m);
p.setY(m);
p.setH(sc.nextInt());
pf[0]=p;
max = sc.nextInt();
// 给各个平台的数据赋值
for (int i = 1; i <= n; i++) {
p=t.new platform();
p.setX(sc.nextInt());
p.setY(sc.nextInt());
p.setH(sc.nextInt());
pf[i]=p;
}
}
}
注意:内部类对象的生成方法