Java入门:The Third Day
今日重点:对美女选妃(emmmm)项目的完善
Part1:接口
接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。
Part1:抽象方法与抽象类
抽象方法
使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
抽象类
包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。
//抽象类
abstract class Animal {
abstract public void shout(); //抽象方法
}
class Dog extends Animal {
//子类必须实现父类的抽象方法,否则编译错误
public void shout() {
System.out.println("汪汪汪!");
}
public void seeDoor(){
System.out.println("看门中....");
}
}
//测试抽象类
public class TestAbstractClass {
public static void main(String[] args) {
Dog a = new Dog();
a.shout();
a.seeDoor();
}
}
Part3:美女选妃项目完善
package services;
public class Human {
int heights;
int weights;
@Override
public String toString() {
return "Human{" +
"heights=" + heights +
", weights=" + weights +
'}';
}
}
package services;
import java.util.*;
import java.util.Scanner;
public class BeautifulLadies
{
//美女选妃
//得到三个美女
void getladies()
{
int a = 1;
int n = 0;
int num;
Scanner input = new Scanner(System.in);
System.out.println("请输入需要美女的人数");
num = input.nextInt();
List<Human> Ladys = new ArrayList<>();
//List<Integer> heights=new ArrayList<>();
//List<Integer> weights=new ArrayList<>();
for (int j = 1; j < num + 1; j++)
{
Human badwomen = new Human();
System.out.println("请输入第" + j + "位美女的身高");
int h = input.nextInt();
badwomen.heights = h;
System.out.println("请输入第" + j + "位美女的体重");
int w = input.nextInt();
badwomen.weights = w;
Ladys.add(badwomen);
}
int lengthH=Ladys.size();
System.out.println(Ladys);
Map<String,Integer> map =getHeightWeightAvg(Ladys);
System.out.println("平均身高:"+map.get("平均身高"));
System.out.println("平均体重:"+map.get("平均体重"));
int avgH=map.get("平均身高");
int avgW=map.get("平均体重");
for(int i=0;i<Ladys.size();i++)
{
if(Ladys.get(i).heights>=avgH)
{
System.out.println("第"+a+"身高合格");
}
else
{
System.out.println("第"+a+"身高不合格");
}
}
a=1;
for(int i=0;i<Ladys.size();i++)
{
if(Ladys.get(i).weights<=avgW)
{
System.out.println("第"+a+"体重合格");
}
else
{
System.out.println("第"+a+"体重不合格");
}
a++;
}
System.out.println();
System.out.println("合格美女名单:");
for(;n<lengthH;n++)
{
if(Ladys.get(n).heights>=avgH&&Ladys.get(n).weights<=avgW)
{
System.out.println("第"+(n+1)+"位");
return;
}
}
System.out.println("无符合要求的美女");
}
Map<String,Integer> getHeightWeightAvg(List <Human> Ladys)
{
int sumH=0;
for(int n=0;n<Ladys.size();n++)
{
sumH=sumH+Ladys.get(n).heights;
}
int sumW=0;
for(int n=0;n<Ladys.size();n++)
{
sumW=sumW+Ladys.get(n).weights;
}
int avgh=sumH/Ladys.size();
int avgw=sumW/Ladys.size();
System.out.println(avgh);
System.out.println(avgw);
Map<String,Integer> map =new HashMap<>();
map.put("平均身高",avgh);
map.put("平均体重",avgw);
return map;
}
实验结果: