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;
c语言struct头文件}
public double getScore() {
return Score;
}
public void setScore(double Score) {
this.Score = Score;
}
}
这个 Class Student 对象⼤概的意思应该是 setName() 、setScore() 字⾯意思可知负责从外⾯接收输⼊并更新数据,这不有个 = 赋值操作符,同样setName() 、setScore() 字⾯意思是外部进⾏调⽤时返回对应数据,于是有 return 语句。
public String getName() 定义什么类型就保持类型⼀致, get\set 直接连接定义的变量⽤,⽤于获得\设置数值。
此处暂时定义了两个属性,如果要添加更多的属性就依照这样的模式添加,⼀定注意类型要⼀致。
如何使⽤呢,我想上⼀串代码就可以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 = Int();
for(int i = 0; i < studentNumber; i++) {
Students[i] = new Student();
System.out.println("请输⼊第" + (i+1) + "名学⽣的姓名");
Students[i].());
System.out.println("请输⼊第" + (i+1) + "名学⽣的成绩");
Students[i].Double());
}
System.out.println("最⾼分: ");
System.out.println(" \t\t" + "姓名" + "\t\t" + "成绩");
System.out.println("\t\t" + Students[max(Students, studentNumber)].getName() + "\t\t" + Students[max(Students, studentNumber)].getScore() ); System.out.println("成绩排序: ");
sort(Students, studentNumber);
for(int i = 0; i < studentNumber; i++) {
System.out.println("\t\t" + Students[i].getName() + "\t\t" + 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;
}
}
}
}
}
怎样?和结构体差不多的⽤法吧,就是定义时有点繁琐。
这个只是个简单的不健壮的程序,⽐如⽆法判断数据输⼊有效性、名称不能有空格、最⾼分有多个时展⽰不全等等,后续可以加强。 先记在此处,算是学习笔记吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论