第1关:接口的定义与使用-学生还是老师
    
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:
   
    定义一个Introduce接口,包括一个introduction()方法,输出格式见测试样例。
    
    定义一个Student类和一个Teacher类实现Introduce接口。
   
package step1;
import java.util.Objects;
import java.util.Scanner;
public class StudentOrTeacher {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String string = scanner.next();
        Introduce p=null;
        if (Objects.equals(string, "学生")) {
            p = new Student();
            
        }
        else if (Objects.equals(string, "老师")) {
            p = new Teacher();
            
        }
        p.introduction();
    }
}
/********** Begin *********/
    interface Introduce {
        void introduction();
    }
class Student implements Introduce {
    @Override
    public void introduction() {
        System.out.println("我是一名学生!");
    }
}
class Teacher implements Introduce {
    @Override
    public void introduction() {
        System.out.println("我是一名老师!");
    }
}
/********** End *********/
第2关:接口应用:充电器接口的实现
    本程序包含三个源文件,分别是:
    
    Telephone.java:主类定义
    
    ICharger.java:接口定义
    
    Charger.java:实现接口的具体类的定义
    
    你的任务是:
    
    (1)熟读ICharger.java中的代码和测试结果,并仔细阅读Telephone中的代码。
    
    (2)在上述前提下,在Telephone中begin-end区域补充完整代码,只需要添加一条代码即可。
    
    (3)完成Charger的定义。
    
    编程要求
    
    本程序包含三个源文件,分别是:
    
    Telephone.java:主类定义
    
    ICharger.java:接口定义
    
    Charger.java:实现接口的具体类的定义
    
    你的任务是:
    
    (1)熟读ICharger.java中的代码和测试结果,并仔细阅读Telephone中的代码。
    
    (2)在上述前提下,在Telephone中begin-end区域补充完整代码,只需要添加一条代码即可。
    
    (3)完成Charger的定义。
   
    测试说明
    
    平台会对你编写的代码进行测试,测试结果的格式如下:
    
    请输入交流电压和当前手机电量:
    
    220 47
    
    已充电到52%
    
    已充电到57%
    
    已充电到62%
    
    已充电到67%
    
    已充电到72%
    
    已充电到77%
    
    已充电到82%
    
    已充电到87%
    
    已充电到92%
    
    已充电到97%
    
    已充电到100%
    
    充电器停止充电
   
Telephone.java
package step1;
import java.util.Scanner;
public class Telephone {
	ICharger charger;
	private int currentEnergy;
	public Telephone() {
		//begin,请在begin-end之间添加一条语句,不要改动其他任何代码,否则为0分。
        charger = new Charger(); //接口回调		 
		//end
	}
	public static Scanner sc=new Scanner(System.in);
	public static void main(String[] args) {
		
		Telephone tel=new Telephone();
		System.out.println("请输入交流电压和当前手机电量:");
		float vol=sc.nextFloat();
		tel.currentEnergy=sc.nextInt();
		tel.beginCharge(vol);
		sc.close();
	}
	private void beginCharge(float vol) {
		if(charger.connectPowerline(vol)) {
			while(true) {
				currentEnergy=charger.doCharge(currentEnergy);
				if(currentEnergy==100) {
					break;
				}
			}
		}
	}
}
Charger.java
 //Charger.java ,请完成Charger的完整定义,使它满足主方法的输出内容和格式的要求。
 package guet;
 public class Charger implements ICharger {
    /**
     * 将充电器连接到交流电源上
     * @param voltage 交流电电压
     * @return 当voltage在[200-240]V范围时,返回true,否则返回false
     */
    @Override
    public boolean connectPowerline(float voltage) {
        if (voltage>=200 && voltage<=240){
            return true;
        }else {
            System.out.println("交流电压不在[200,240]范围,无法充电");
            return false;
        }
    }
    /**
     * 关电,停止充电
     */
    @Override
    public void powerOff() {
        System.out.println("充电器停止充电");
    }
    /**
     * 给手机充电,调用该方法1次,充电5%
     * @param currentEnergy 手机电池现有电量,[0-100]间的数
     * 若电量为100(满电),则停止充电,自动调用powerOff
     * @return 充电后的电池电量,若currentEnergy为10,则返回10+5=15
     */
    @Override
    public int doCharge(int currentEnergy) {
        if (currentEnergy>=0 && currentEnergy<=100){
            if(currentEnergy == 100){
                powerOff();
                return currentEnergy;
            }
            currentEnergy = currentEnergy+5;
            if(currentEnergy > 100){
                currentEnergy = 100;
                System.out.println("已充电到"+currentEnergy+"%");
                powerOff();
                return currentEnergy;
            }
            
            System.out.println("已充电到"+currentEnergy+"%");
            return currentEnergy;
        }
        return 0;
    }
}
ICharger.java
 package step3;
/**
 * 提供给充电设计公司的接口
 * @author guet.imagan
 *
 */
public interface ICharger {
	/**
	 * 将充电器连接到交流电源上
	 * @param voltage 交流电电压
	 * @return 当voltage在[200-240]V范围时,返回true,否则返回false
	 */
	boolean connectPowerline(float voltage);
	/**
	 * 关电,停止充电
	 */
	void powerOff();
	/**
	 * 给手机充电,调用该方法1次,充电5%
	 * @param currentEnergy 手机电池现有电量,[0-100]间的数
	 * 若电量为100(满电),则停止充电,自动调用powerOff
	 * @return 充电后的电池电量,若currentEnergy为10,则返回10+5=15
	 */
	int doCharge(int currentEnergy);
}
    第3关:接口的继承-体育爱好
    
    编程要求
    
    本关的编程任务是补全右侧代码片段中Begin至End中间的代码,完成MyFavourateTeam类以实现其需要实现的接口,具体要求如下:
   
    通过setSports()设置喜欢的体育赛事类型,如篮球、足球;
    
    通过setTeam()设置支持的队伍,如洛杉矶湖人、皇家马德里等;
    
    通过introduction()大声说出你喜欢的运动,和喜欢的球队,格式如下:“我最喜欢的体育运动是xxx,我最喜欢的球队是xxx”。(具体输入输出格式可参见测试样例)
    
    评测说明
    
    平台将自动编译补全后的代码,并生成若干组测试数据,接着根据程序的输出判断程序是否正确。
   
以下是测试样例:
    测试输入:
    
    篮球 洛杉矶湖人
    
    预期输出:
    
    我最喜欢的体育运动是篮球,我最喜欢的球队是洛杉矶湖人
   
package step2;
import java.util.Scanner;
public class SportsEvents {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String sports = scanner.next();
        String team = scanner.next();
        MyFavourateTeam myFavourateTeam = new MyFavourateTeam();
        myFavourateTeam.setSports(sports);
        myFavourateTeam.setTeam(team);
        myFavourateTeam.introduction();
    }
}
interface Sports {
    void setSports(String sports);
}
interface Team {
    void setTeam(String team);
}
interface ChooseTeam extends Sports, Team {
    void introduction();
}
/********** Begin *********/
class MyFavourateTeam implements ChooseTeam {
    private String sports;
    private String team;
    @Override
    public void setSports(String sports) {
        this.sports = sports;
    }
    @Override
    public void setTeam(String team) {
        this.team = team;
    }
    @Override
    public void introduction() {
        System.out.println("我最喜欢的体育运动是"+sports+",我最喜欢的球队是"+team);
    }
    
    
}
/********** End *********/
答案仅供参考,不对的还请指正,不懂的答疑时去问老师。
 
