一、题目
编写一个学生类Student,属性包括:学号、姓名、年龄和成绩,数据由键盘进行输入且数据自拟,实现如下操作:
1、所有属性的getter和setter方法以及类的有参和无参构造方法;
2、将所有输入的学生信息打印出来;
3、可以通过学号查找学生信息;
4、显示成绩最高和成绩最低的学生信息;
5、对学生成绩进行升序和降序排列;
6、将所有学生年龄增加一岁;
7、显示所有年龄大于20岁的学生信息。
二、实验代码
package fighting;
import java.util.Scanner;
public class fighting
{
public static class Student{ //以public class开头的内部类为动态的,而主程序以public static class开头
//在java中,类中的静态方法不能直接调用动态方法,只有将某个内部类修饰为静态类,能够在静态类中调用该类的成员变量与成员方法。即此处应改为public static class Student
int num;//学号
String name;//姓名
int age;//年龄
int score;//成绩
public Student()//空参构造
{
super();
}
public Student(int num,String name,int age,int score) //有参构造
{
this.num=num;
this.name=name;
this.age=age;
this.score=score;
}
//各属性的getter和setter方法
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
//数组中顺序显示所有学生信息
void Print(Student[] array)//Student[] array为对象数组,其在使用时必须逐一实例化
{
for(int i=0;i<array.length;i++)
{
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
}
//通过学生学号查找学生信息
void Find(int num,Student[] array)//参数为num和学生类数组array
{
for(int i=0;i<array.length;i++)
{
if(num==array[i].getNum())
{
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
}
}
//根据成绩最高和成绩最低学生信息
void Score(Student[] array)
{
for(int i=0;i<array.length;i++)
{
int max=array[0].score;
int min=array[0].score;
if(array[i].score>max)
{
max=array[i].score;
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
if(array[i].score<min)
{
min=array[i].score;
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
}
}
//按学生成绩降序排列
void ScoreLow(Student[] array)
{
for(int i=0;i<array.length;i++)
{
for(int j=i+1;j<array.length;j++)
{
if(array[i].getScore()<array[j].getScore())
{
Student temp=null;//对象的空值用null表示
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
}
//按学生成绩升序排列
void ScoreHigh(Student[] array)
{
for(int i=0;i<array.length;i++)
{
for(int j=i+1;j<array.length;j++)
{
if(array[i].getScore()>array[j].getScore())
{
Student temp=null;//对象的空值用null表示
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age+" 成绩:"+array[i].score);
}
}
//所有学生年龄加一岁
void Add(Student[] array)
{
for(int i=0;i<array.length;i++)
{
array[i].age+=1;
}
}
//显示所有年龄大于20岁的学生名单
void Check(Student[] array)
{
for(int i=0;i<array.length;i++)
{
if(array[i].age>20)
{
System.out.println("学号:"+array[i].num+" 姓名:"+array[i].name+" 年龄:"+array[i].age);
}
}
}
}
public static void main(String[] args)
{
//法一:手动输入学生信息
Scanner sc=new Scanner(System.in);
System.out.println("请输入学生人数:");
int x=sc.nextInt();
Student[] array=new Student[x];
for(int i=0;i<array.length;i++)
{
array[i]=new Student();//若在编写一个java程序时没有添加无参构造方法,编译器会自动添加无参构造方法;
//但是若编写时添加了有参构造方法而未添加无参构造方法,则编译器只认有参构造方法而不会默认添加无参构造方法,需要注意的是如果需要使用无参构造方法,一定要在类中里面添加
System.out.println("请输入第"+(i+1)+"个学生的学号");
int num=sc.nextInt();//输入学号
array[i].setNum(num);
System.out.println("请输入第"+(i+1)+"个学生的姓名");
String name=sc.next();//输入姓名
array[i].setName(name);
System.out.println("请输入第"+(i+1)+"个学生的年龄");
int age=sc.nextInt();//输入年龄
array[i].setAge(age);
System.out.println("请输入第"+(i+1)+"个学生的成绩");
int score=sc.nextInt();//输入成绩
array[i].setScore(score);
}
System.out.println("所有学生初始信息如下:");
array[1].Print(array);
System.out.println("----------------------------------");
System.out.println("学号为201801学生信息如下:");
array[1].Find(201801, array);
System.out.println("----------------------------------");
System.out.println("成绩最高和成绩最低的学生信息如下:");
array[1].ScoreHigh(array);
System.out.println("----------------------------------");
System.out.println("成绩降序排列:");
array[1].ScoreLow(array);
System.out.println("----------------------------------");
System.out.println("成绩升序排列:");
array[1].ScoreLow(array);
System.out.println("----------------------------------");
System.out.println("所有学生年龄加一后信息如下:");
array[1].Add(array);
array[1].Print(array);
System.out.println("----------------------------------");
System.out.println("年龄大于20的学生名单:");
array[1].Check(array);
System.out.println("----------------------------------");
/* 法二:直接在程序设置学生信息
* Student s1=new Student(20180001,"张三",19,87);
* Student s2=new Student(20180002,"李四",20,65);
* Student s3=new Student(20180003,"王五",21,99);
* Student[] array= {s1,s2,s3};
* System.out.println("所有学生初始信息如下:");
* s1.Print(array);
* System.out.println("----------------------------------");
* System.out.println("学号为201801学生信息如下:");
* s1.Find(201801, array);
* System.out.println("----------------------------------");
* System.out.println("成绩最高和成绩最低的学生信息如下:");
* s1.ScoreHigh(array);
* System.out.println("----------------------------------");
* System.out.println("成绩降序排列:");
* s1.ScoreLow(array);
* System.out.println("----------------------------------");
* System.out.println("成绩升序排列:");
* s1.ScoreLow(array);
* System.out.println("----------------------------------");
* System.out.println("所有学生年龄加一后信息如下:");
* s1.Add(array);
* s1.Print(array);
* System.out.println("----------------------------------");
* System.out.println("年龄大于20的学生名单:");
* s1.Check(array);
* System.out.println("----------------------------------");*/
}
}
三、运行结果