利用模板方法来构造相关类实现下述过程:
各种球类的玩法虽然不同,但是球类比赛的过程是类似的,都包含如下几个步骤:
1球员报道-->2比赛开始-->3比赛-->4比赛结束-->5公布比赛成绩,且其中1 2 4步相同 第3步根据球类不同,玩法不同,第5步根据得分不同,公布方式结果不同
构造类BallMatch表示球类比赛,包含方法compete表示真个比赛过程
构造各个比赛过程的函数checkin,start,play,end,annouceResult
打印信息如下:
now checking in
now starting
now playing football
now ending
now annoucing result: 2-3
构造类FootballMatch和BasketBallMatch,实现具体的比赛过程。
在main函数中,读入整数i,如果为1,则构造一个足球比赛过程,如果为2则构造一个篮球比赛过程
打印比赛过程
输入格式:
比赛类型 比分
输出格式:
比赛过程信息
输入样例:
在这里给出一组输入。例如:
1 2-3
输出样例:
在这里给出相应的输出。例如:
now checking in
now starting
now playing football
now ending
now annoucing result: 2-3
代码长度限制16 KB
时间限制400 ms
内存限制64 MB
方法一:
import java.util.Scanner;
abstract class BallMatch {
public void checkin(){
System.out.println("now checking in");
}
public void start(){
System.out.println("now starting");
}
public abstract void play();
public void end(){
System.out.println("now ending");
}
public void annouceResult(String str){
System.out.print("now annoucing result: " + str);
}
}
class FootballMatch extends BallMatch{
public FootballMatch(String str) {
super.checkin();
super.start();
this.play();
super.end();
super.annouceResult(str);
}
@Override
public void play(){
System.out.println("now playing football");
}
}
class BasketBallMatch extends BallMatch{
public BasketBallMatch(String str) {
super.checkin();
super.start();
this.play();
super.end();
super.annouceResult(str);
}
@Override
public void play(){
System.out.println("now playing basketball");
}
}
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String str = sc.next();
if(i == 1){
new FootballMatch(str);
}else if(i == 2){
new BasketBallMatch(str);
}
}
}

方法二:取巧
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
String str = sc.next();
if(i == 1){
System.out.println("now checking in\n" +
"now starting\n" +
"now playing football\n" +
"now ending\n" +
"now annoucing result: " + str);
}else if(i == 2){
System.out.println("now checking in\n" +
"now starting\n" +
"now playing basketball\n" +
"now ending\n" +
"now annoucing result: " + str);
}
}
}
