Java用类实现结构体的功能

来源:互联网 发布:reflector软件下载 编辑:程序博客网 时间:2024/06/12 23:50

我们都知道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;
        }
    }

}


注意:内部类对象的生成方法


原创粉丝点击