第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 *********/
答案仅供参考,不对的还请指正,不懂的答疑时去问老师。