zoukankan      html  css  js  c++  java
  • C语言 Struct 结构体在 Java 中的体现

      大一整个学期完成了 C 语言的学习,大二就进入了Java 的学习。

      和C语言一样,我们都会尝试写一个小小的学生管理系统什么的,学习过 C 语言同学知道,在管理系统中 Struct 结构体是个很好用的东西,使用它就避免了一些棘手的问题。

      那么问题来了,在 Java 还有 Struct 结构体嘛?

      答案没有的,不过 Java 中的 Class 对象体现的就是 Struct 结构体的思想。虽然 C 语言是一个面向过程化的语言,不过这个 Struct 结构体却面向对象的味道,而 Java 做为面向对象的语言,要实现 Struct 

       和定义结构体一样,先定义一个 Class 对象,参考网上资料这里以一个学生管理系统为例。

    //定义学生实体类
    class Student {
            private String Name;
            private double Score;
            public Student() {
                super();
            }
    
            public String getName() {
                return Name;
            }
            public void setName(String Name) {
                this.Name = Name;
            }
    
            public double getScore() {
                return Score;
            }
            public void setScore(double Score) {
                this.Score = Score;
            }
    }

      这里学生定义了姓名和分数两个属性,用 private 访问权限修饰符吧,安全些,关于private、public、protected 的区别了解一下 https://blog.csdn.net/spu20134823091/article/details/53836192

      这个 super() his 是什么东西,个人理解像是自身调用自身的意思,详解百度一下吧。 https://zhidao.baidu.com/question/14360400.html

      这个 Class Student 对象大概的意思应该是 setName() 、setScore() 字面意思可知负责从外面接收输入并更新数据,这不有个 = 赋值操作符 ,同样setName() 、setScore() 字面意思是外部进行调用时返回对应数据,于是有 return 语句。

      public String getName() 定义什么类型就保持类型一致, getset 直接连接定义的变量用,用于获得设置数值。

      此处暂时定义了两个属性,如果要添加更多的属性就依照这样的模式添加,一定注意类型要一致。

      如何使用呢,我想上一串代码就可以get到了。

    import java.util.Scanner;
    
    //定义学生类实体
    class Student {
            private String Name;
            private double Score;
            public Student() {
                super();
            }
    
            public String getName() {
                return Name;
            }
            public void setName(String Name) {
                this.Name = Name;
            }
    
            public double getScore() {
                return Score;
            }
            public void setScore(double Score) {
                this.Score = Score;
            }
    }
    
    public class Main {
        static Student[] Students = new Student[1000];
        public static void main(String [] args) {
            Scanner Input = new Scanner(System.in);
            System.out.println("请输入学生数量:");
            int studentNumber = Input.nextInt();
            for(int i = 0; i < studentNumber; i++) {
                Students[i] = new Student();
                System.out.println("请输入第" + (i+1) + "名学生的姓名");
                Students[i].setName(Input.next());
                System.out.println("请输入第" + (i+1) + "名学生的成绩");
                Students[i].setScore(Input.nextDouble());
            }
            System.out.println("最高分: ");
            System.out.println(" 		" + "姓名" + "		" + "成绩");
            System.out.println("		" + Students[max(Students, studentNumber)].getName() + "		" + Students[max(Students, studentNumber)].getScore() );
            System.out.println("成绩排序: ");
            sort(Students, studentNumber);
            for(int i = 0; i < studentNumber; i++) {
                System.out.println("		" + Students[i].getName() + "		" + Students[i].getScore());
            }
        }
    
        //返回学生成绩最高分对应学生下标
       static int max(Student[] Students, int n) {
            int flag = 0;
            double max = Students[0].getScore();
            for(int i = 1; i < n; i++) {
                if(Students[i].getScore() > max) {
                    max = Students[i].getScore();
                    flag = i;
                }
            }
            return flag;
        }
    
       //学生成绩排序
        static void sort(Student[] Students, int n) {
            Student temp = new Student();
            for(int i = 0; i < n; i++) {
                for(int j = i+1; j < n; j++) {
                    if(Students[i].getScore() > Students[j].getScore()) {
                        temp = Students[i];
                        Students[i] = Students[j];
                        Students[j] = temp;
                    }
                }
            }
        }
    }

      怎样?和结构体差不多的用法吧,就是定义时有点繁琐。

      这个只是个简单的不健壮的程序,比如无法判断数据输入有效性、名称不能有空格、最高分有多个时展示不全等等,后续可以加强。

      先记在此处,算是学习笔记吧。

  • 相关阅读:
    sqlserver2012附加数据库2005版本时出现的问题
    jQuery实现评论还剩多少个字
    在mvc3中经常使用身份验证实现
    Windows Phone学习(1):棋子未动,先观全局
    使用jquery.pagination.js实现无刷新分页
    Javascript和JQuery中常用的随机数产生函数(很好用)
    网页打印样式设置(页眉,页脚,页边距)
    rdlc到设置宽度后自动换行(转)
    VSS忘记Admin密码和修改默认登陆用户
    解决jquery 修改onclick事件后IE兼容模式下立刻执行的问题
  • 原文地址:https://www.cnblogs.com/notfound/p/9627328.html
Copyright © 2011-2022 走看看