笔记:Java求最高分数的学生成绩。



法I:

//定义学生类,有姓名、英语成绩、数学成绩、物理成绩四个属性及其方法
class Student{
	private String name;		//设置名字
	private int english;		//英语成绩
	private int math;			//数学成绩
	private int physics;		//物理成绩
	Student(){};				//默认构造函数
	Student(String name,int english,int math,int physics){		//构造函数,初始化四个属性
		setName(name);
		setEnglish(english);
		setMath(math);
		setPhysics(physics);
	}
	//setter方法
	public void setName(String name) 		{		this.name = name;		}	
	public void setEnglish(int english) 	{		this.english = english;	}	
	public void setMath(int math) 			{		this.math = math;		}	
	public void setPhysics(int physics) 	{		this.physics = physics;	}
	//getter方法
	public String getName()	 {	return name;	}
	public int getEnglish() {	return english;	}
	public int getMath() 	 {	return math;	}
	public int getPhysics() {	return physics;	}
	//获取对象总分的方法
	public int sum(){
		return this.english+this.math+this.physics;
	}
}


//测试类
public class Task1_1 {
	public static void main(String[] args ){
		Student DingYi 	= new Student("丁一",62,64,94);		//生成对象,下同
		Student LiuEr 	= new Student("刘二",46,97,27);
		Student ZhangSan= new Student("张三",91,81,65);
		Student LiSi 	= new Student("李四",73,75,51);
		Student WangWu 	= new Student("王五",29,90,88);
		//max嵌套比较求总分最大值对象
		Student Max=max( DingYi , max( LiuEr , max ( ZhangSan , max( LiSi , WangWu))));
		//输出最高分对象
		System.out.println("总分最高的是" + Max.getName() +",\n英语成绩:"+Max.getEnglish()+"分\n数学成绩:"
						+Max.getMath()+"分\n物理成绩:"+Max.getPhysics()+"分\n他(她)的总分是" + Max.sum() + "分。");
	}
	//max()方法,返回最大值对象
	public static Student max(Student a,Student b){	
		return 	 a.sum()>b.sum()? a : b;		
	}
}
总结:
1,、sum()方法用对象属性进行比较,返回对象本身(Student),而不是直接比较对象属性(sum),否则返回对象属性时还要再次判断返回的谁的属性。
2、 max使用时嵌套调用,免去了循环比较,但扩展性不好。
3、return是可以通过三目比较运算符实现,简化代码。
4、缺点:类的属性构成不太合理。


法II:
//分数类
class score{
	private 	int English;	//英语
	private 	int Math;		//数学
	private 	int Physics;	//物理
	//setter方法
	public void setEnglish(int english) {		English = english;	}	
	public void setMath(int math)       {		Math = math;		}
	public void setPhysics(int physics) {		Physics = physics;	}
	//getter方法
	public int getEnglish() {		return English;	}
	public int getMath() 	 {		return Math;	}
	public int getPhysics() {		return Physics;	}
}
//学生类
class Student extends score{
	private String name;		//姓名属性
	Student(String name){this.name=name;}						//构造方法
	Student(String name,int English,int Math,int Physics){		//构造方法
		this(name);
		super.setEnglish(English);
		super.setMath(Math);
		super.setPhysics(Physics);
	}
	public void setName(String name) {		this.name = name;	}	//setter
	public String getName() {		return name;	}				//getter
	public int sum(){												//求得总分的方法
		return	 super.getEnglish()+super.getMath()+super.getPhysics();
	}
}


//测试类
public class Task1_2 {
	public static void main(String[] args ){
		Student DingYi 	= new Student("丁一",62,64,94);		//生成对象,下同
		Student LiuEr 	= new Student("刘二",46,97,27);
		Student ZhangSan= new Student("张三",91,81,65);
		Student LiSi 	= new Student("李四",73,75,51);
		Student WangWu 	= new Student("王五",29,90,88);
		//max嵌套比较求总分最大值对象
		Student Max=max( DingYi , max( LiuEr , max ( ZhangSan , max( LiSi , WangWu))));
		//输出最高分对象
		System.out.println("总分最高的是" + Max.getName() +",\n英语成绩:"+Max.getEnglish()+"分\n数学成绩:"
						+Max.getMath()+"分\n物理成绩:"+Max.getPhysics()+"分\n他(她)的总分是" + Max.sum() + "分。");
	}
	//max()方法,返回最大值对象
	public static Student max(Student a,Student b){	
		return 	 a.sum()>b.sum()? a : b;		
	}
}
总结:
1.通过继承实现。

你可能感兴趣的:(java,Math,String,测试,Class,扩展)