6-6 使用继承,实现“剪刀石头布的游戏”
如果写到这道题恭喜你你中奖了,让你体会体会人间疾苦,哈哈哈哈
分数?10
全屏浏览题目
切换布局
作者?秋
单位?许昌学院
使用继承,实现“剪刀石头布的游戏”。
小时候很喜欢玩一个游戏,“剪刀石头布”,可以是出拳的形式,或跳格子的形式。现在我们用计算机来玩这个游戏。
电脑用随机数产生剪刀石头布,游戏玩家用输入1,2,3的方式出拳。
游戏玩家输入1或2或3,分别 代表剪刀(1)石头(2)布(3)。
电脑胜出时,显示"Winner is computerPlayer."
游戏玩家胜出时,显示“Winner is personPlayer.”
平局时显示"A Draw."
函数接口定义:
根据主方法内容,实现三个类的定义,分别是是ComputerPlayer、PersonPlayer、Game类。 其中ComputerPlayer、PersonPlayer要继承Player类。 根据主方法中的用法,实现Game类。
裁判测试程序样例:
import java.util.Scanner;
class Player{
String name;
Player(String name){
this.name = name;
}
int show() { //出拳方法
int show = ( int ) (Math.random() * 10 ) %3 +1;
return show ;
}
}
/* 请在这里填写答案 */
public class Main {
public static void main(String[] args) {
ComputerPlayer c = new ComputerPlayer ("computer");
PersonPlayer p = new PersonPlayer("player ") ;
Game g = new Game( c ,p );
g.start();
}
}
输入样例:
2
输出样例:
A Draw.
代码长度限制
16 KB
正确代码
package pta代码;
import java.util.*;
class Player {
String name;
Player(String name) {
this.name = name;
}
int show() { // 出拳方法
int show = (int) (Math.random() * 10) % 3 + 1;
return show;
}
}
/* 请在这里填写答案 */
class ComputerPlayer extends Player {
static String name = null;
public ComputerPlayer() {
super(name);
}
public ComputerPlayer(String name) {
super(name);
this.name = name;
}
public int show() {
int n = (int) (Math.random() * 10) % 3 + 1;
return n;
}
}
class PersonPlayer extends Player {
int n;
static String name = null;
public PersonPlayer() {
super(name);
}
public PersonPlayer(String name) {
super(name);
this.name = name;
}
public int show() {
Scanner cin = new Scanner(System.in);
this.n = cin.nextInt();
return this.n;
}
}
class Game {
ComputerPlayer com;
PersonPlayer pe;
public Game(ComputerPlayer c, PersonPlayer p) {
this.com = com;
this.pe = pe;
}
public void start() {
this.com = new ComputerPlayer();
this.pe = new PersonPlayer();
int c = com.show();
int p = pe.show();
if (p == 1) {
if (c == 1) {
System.out.println("A Draw.");
} else if (c == 2) {
System.out.println("Winner is personPlayer.");
} else
System.out.println("Winner is computerPlayer.");
} else if (p == 2) {
if (c == 1) {
System.out.println("Winner is computerPlayer.");
} else if (c == 2) {
System.out.println("A Draw.");
} else
System.out.println("Winner is personPlayer.");
} else if (p == 3) {
if (c == 1) {
System.out.println("Winner is personPlayer.");
} else if (c == 2) {
System.out.println("Winner is computerPlayer.");
} else
System.out.println("A Draw.");
}
}
}
public class Main {
public static void main(String[] args) {
ComputerPlayer c = new ComputerPlayer("computer");
PersonPlayer p = new PersonPlayer("player ");
Game g = new Game(c, p);
g.start();
}
}
时间限制
400 ms
内存限制
6-8 设计门票(抽象类)
分数?10
全屏浏览题目
切换布局
作者?殷伟凤
单位?浙江传媒学院
某学校举办一次活动,需要凭票参加,每张票都有票号和售价。 门票分为3类:当天票,预订票和学生预订票。 当天票价格50。 预订票,提前时间>10天的,售价30;提前10天以内的,售价40; 学生预订票,提前时间>10天的,售价15;提前10天以内的,售价20。
(1)编写抽象类Ticket类,包含以下成员 ①属性: number:私有,int型,表示票号; ②方法:
- Ticket(int number), 构造方法,初始化票号;
- int getPrice(), 返回票价,抽象方法;
- String toString(),返回一个字符串,格式为“Number:票号,Price:票价”。
(2)编写Ticket类的子类WalkupTicket,表示当天票,包含以下成员 ①方法: 1)WalkupTicket(int number), 构造方法,初始化票号; 2)int getPrice(), 返回票价50。
(3)编写Ticket类的子类AdvanceTicket,表示预订票,包含以下成员 ①属性:
- leadTime:私有,int型,表示提前预订的天数;
②方法: - AdvanceTicket(int number,int leadTime), 构造方法,初始化票号和提前天数;
- int getPrice(), 如果提前天数>10天,票价30,否则,票价40。
(4)编写AdvanceTicket类的子类StudentAdvanceTicket,表示学生预订票,包含以下成员 ①属性:
-
height:私有,int型,表示购票学生的身高(单位厘米); ②方法: 1)StudentAdvanceTicket(int number,int leadTime,int height), 构造方法,初始化票号、提前天数和身高; 2)int getPrice(), 如果学生身高>120:提前天数>10天,票价20,否则,票价30。 如果学生身高<=120,票价是身高120以上学生的对折。
裁判测试程序样例:
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
Ticket a = new WalkupTicket(in.nextInt());
System.out.println(a.toString());
Ticket b = new AdvanceTicket(in.nextInt(), in.nextInt());
System.out.println(b.toString());
Ticket c = new StudentAdvanceTicket(in.nextInt(), in.nextInt(), in.nextInt());
System.out.println(c.toString());
}
}
/* 请在这里填写答案 */
按如下框架设计类后提交即可:
abstract class Ticket {
……
}
class WalkupTicket extends Ticket {
……
}
class AdvanceTicket extends Ticket {
……
}
class StudentAdvanceTicket extends AdvanceTicket {
……
}
输入样例:
输入票号,创建一个WalkupTicket对象。 输入票号和提前天数,创建一个AdvanceTicket对象。 输入票号、提前天数和身高,创建一个StudentAdvanceTicket对象。
1
2 10
3 11 130
输出样例:
输出创建的3个对象的票号和票价(调用toString()方法)。
Number:1,Price:50
Number:2,Price:40
Number:3,Price:20
代码长度限制
16 KB
时间限制
400 ms
内存限制
注意满分代码给您端上
package pta代码;
import java.util.*;
//(1)编写抽象类Ticket类,包含以下成员
abstract class Ticket {
// ①属性:
// number:私有,int型,表示票号;
private int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
// ②方法:
// Ticket(int number), 构造方法,初始化票号;
public Ticket(int number) {
this.setNumber(number);
}
// int getPrice(), 返回票价,抽象方法;
abstract public int gtePrice();
// String toString(),返回一个字符串,格式为“Number:票号,Price:票价”。;
abstract public String toString();
}
//(2)编写Ticket类的子类WalkupTicket,表示当天票,包含以下成员
class WalkupTicket extends Ticket {
int price;
// ①方法:
// 1)WalkupTicket(int number), 构造方法,初始化票号;
//下面的super()要调用父类的方法和变量就必须在第一个方法体中实现super()
//具体且要表上其中的成员变量
public WalkupTicket(int number) {
super(number);
this.price = 50;
}
// 2)int getPrice(), 返回票价50。
@Override
public int gtePrice() {
return this.price;
}
// 子类好像必须将它父类中得这个toString重写,不知道为啥
//后面查了点资料才知道要实现一个接口如果不是抽象类就必须是下面接口的全部发方法
@Override
public String toString() {
return "Number:" + this.getNumber() + ",Price:" + price;
}
}
//3、编写AdvanceTicket类的子类StudentAdvanceTicket,表示学生预订票,包含以下成员
class AdvanceTicket extends Ticket {
// 1)、leadTime:私有,int型,表示提前预订的天数;
int leadTime = 0;
int price = 0;
// 2)、AdvanceTicket(int number,int leadTime), 构造方法,初始化票号和提前天数;
public AdvanceTicket(int number, int leadTime) {
super(number);
this.leadTime = leadTime;
if (leadTime > 10)
this.price = 30;
else
this.price = 40;
}
// 3)、int getPrice(), 如果提前天数>10天,票价30,否则,票价40。
@Override
public int gtePrice() {
return this.price;
}
@Override
public String toString() {
return "Number:" + this.getNumber() + ",Price:" + this.price;
}
}
//4编写AdvanceTicket类的子类StudentAdvanceTicket,表示学生预订票,包含以下
class StudentAdvanceTicket extends AdvanceTicket {
// 1、height:私有,int型,表示购票学生的身高(单位厘米);
int height;
int price;
// ②方法:
// 1)StudentAdvanceTicket(int number,int leadTime,int height),
// 构造方法,初始化票号、提前天数和身高;
public StudentAdvanceTicket(int number, int leadTime, int height) {
super(number, leadTime);
this.height = height;
if (height > 120) {
if (leadTime > 10)
this.price = 20;
else
this.price = 30;
} else {
if (leadTime > 10)
this.price = 10;
else
this.price = 15;
}
}
// 2)int getPrice(),
// 如果学生身高>120:提前天数>10天,票价20,否则,票价30。
// 如果学生身高<=120,票价是身高120以上学生的对折。
public int getPrice() {
return this.price;
}
@Override
public String toString() {
return "Number:" + this.getNumber() + ",Price:" + this.price;
}
}
public class Main {
public static void main(String args[]) {
Scanner cin = new Scanner(System.in);
Ticket a = new WalkupTicket(cin.nextInt());
System.out.println(a.toString());
Ticket b = new AdvanceTicket(cin.nextInt(), cin.nextInt());
System.out.println(b.toString());
Ticket c = new StudentAdvanceTicket(cin.nextInt(), cin.nextInt(), cin.nextInt());
System.out.println(c.toString());
}
}
7-10 校园角色类设计-2
分数?100
全屏浏览题目
切换布局
作者?蔡轲
单位?南昌航空大学
在校园角色类设计-1题的基础上,增加了部分要求,加粗部分为增加的内容: 学校需要构建综合系统,使用者包含多种角色。角色Role分两类:学生Student和雇员Employee;雇员又分为教员Faculty和职员Staff。 每个角色都有姓名、年龄、性别、电话号码。学生有学号、班级、班级职务(班长、副班长、学习委员等)。一个雇员有工号、入职日期、所在部门。教员有职称和专业。职员有职位称号。 请以如下Main类为基础,构建各个角色类,将代码补充完整。 public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Faculty fac = new Faculty("张三",32,"33006","2019","10","25","讲师"); Student stu=new Student("李四",19,"20201103","202011"); Staff sta = new Staff("王五",27,"32011","2015","06","17","教务员"); fac.setSex('男'); fac.setTel("13600770077"); fac.setDepartment("数信学院"); fac.setMajor("数学"); stu.setSex('女'); stu.setTel("18000009999"); stu.setPosition("班长"); sta.setSex('男'); sta.setTel("18966666666"); sta.setDepartment("航制学院"); Scanner input = new Scanner(System.in); int i = input.nextInt(); /* 本部分使用多态根据用户的输入,输出不同的角色人物的信息, 输入1:教员 输入2:学生 输入3:职员 其他输入:输出"Wrong Format" */ } }
输入格式:
数值
输出格式:
人物的基本信息。根据角色的不同而有差别。
输入样例1:
在这里给出一组输入。例如:
1
输出样例1:
在这里给出相应的输出。例如:
我是张三,男,年龄32岁。电话是13600770077。工号是33006,2019年10月25日入职。就职于数信学院。是一名教师,数学专业,讲师职称。
输入样例2:
在这里给出一组输入。例如:
2
输出样例2:
在这里给出相应的输出。例如:
我是李四,女,年龄19岁。电话是18000009999。学号是20201103,来自202011班。担任班长职务。
输入样例3:
在这里给出一组输入。例如:
3
输出样例3:
在这里给出相应的输出。例如:
我是王五,男,年龄27岁。电话是18966666666。工号是32011,2015年6月17日入职。就职于航制学院。是一名教务员。
输入样例3:
在这里给出一组输入。例如:
5
输出样例3:
在这里给出相应的输出。例如:
Wrong Format
代码长度限制
16 KB
时间限制
400 ms
内存限制
package pta代码;
import java.util.*;
class Faculty {
String name;
int age;
String num, year, muth, day, zc;
public Faculty(String name, int age, String num, String year, String muth, String day, String zc) {
this.name = name;
this.age = age;
this.num = num;
this.year = year;
this.muth = muth;
this.day = day;
this.zc = zc;
}
char sex;
public int getSex() {
return sex;
}
public void setSex(char sex) {
this.sex = sex;
// System.out.println(this.sex);
}
String setTel;
public void setTel(String setTel) {
this.setTel = setTel;
}
String setDepartment;
public void setDepartment(String setDepartment) {
this.setDepartment = setDepartment;
}
String setMajor;
public void setMajor(String setMajor) {
this.setMajor = setMajor;
}
@Override
public String toString() {
// return "Faculty [name=" + name + ", age=" + age + ", num=" + num + ", year=" + year + ", muth=" + muth
// + ", day=" + day + ", zc=" + zc + ", sex=" + sex + ", setTel=" + setTel + ", setDepartment="
// + setDepartment + ", setMajor=" + setMajor + "]";
return "我是" + name + "," + sex + ",年龄" + age + "岁" + "。电话是" + setTel + "。工号是" + num + "," + year + "年" + muth
+ "月" + day + "日入职。就职于" + setDepartment + "。是一名教师" + "," + setMajor + "专业," + zc + "职称。";
}
}
class Student {
String name, num, banji;
int age;
public Student(String name, int age, String num, String banji) {
this.name = name;
this.age = age;
this.num = num;
this.banji = banji;
}
char setSex;
public void setSex(char c) {
// TODO Auto-generated method stub
this.setSex = c;
}
String setTel;
public void setTel(String setTel) {
// TODO Auto-generated method stub
this.setTel = setTel;
}
String setPosition;
public void setPosition(String setPosition) {
// TODO Auto-generated method stub
this.setPosition = setPosition;
}
@Override
public String toString() {
// return "Student [name=" + name + ", num=" + num + ", year=" + year + ", age=" + age + ", setSex=" + setSex
// + ", setTel=" + setTel + ", setPosition=" + setPosition + "]";
return "我是" + name + "," + setSex + ",年龄" + age + "岁" + "。电话是" + setTel + "。学号是" + num + ",来自" + banji + "班。担任"
+ setPosition + "职务。";
}
}
class Staff {
String name;
int age;
String num, year, muth, day, zc;
public Staff(String name, int age, String num, String year, String muth, String day, String zc) {
this.name = name;
this.age = age;
this.num = num;
this.year = year;
this.muth = muth;
this.day = day;
this.zc = zc;
}
char setSex;
public void setSex(char setSex) {
// TODO Auto-generated method stub
this.setSex = setSex;
}
String setTel;
public void setTel(String setTel) {
// TODO Auto-generated method stub
this.setTel = setTel;
}
String setDepartment;
public void setDepartment(String setDepartment) {
// TODO Auto-generated method stub
this.setDepartment = setDepartment;
}
@Override
public String toString() {
// return "Staff [name=" + name + ", age=" + age + ", num=" + num + ", year=" + year + ", muth=" + muth + ", day="
// + day + ", zc=" + zc + ", setSex=" + setSex + ", setTel=" + setTel + ", setDepartment=" + setDepartment
// + "]";
return "我是" + name + "," + setSex + ",年龄" + age + "岁。电话是" + setTel + "。工号是" + num + "," + year + "年" + muth
+ "月" + day + "日入职。就职于" + setDepartment + "。是一名" + zc + "。";
// 我是王五,男,年龄27岁。电话是18966666666。工号是32011,2015年6月17日入职。就职于航制学院。是一名教务员。
}
}
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Faculty fac = new Faculty("张三",32,"33006","2019","10","25","讲师");
// Student stu=new Student("李四",19,"20201103","202011");
// Staff sta = new Staff("王五",27,"32011","2015","6","17","教务员");
// fac.setSex('男');
// fac.setTel("13600770077");
// fac.setDepartment("数信学院");
// fac.setMajor("数学");
// stu.setSex('女');
// stu.setTel("18000009999");
// stu.setPosition("班长");
// sta.setSex('男');
// sta.setTel("18966666666");
// sta.setDepartment("航制学院");
Scanner input = new Scanner(System.in);
int i = input.nextInt();
if (i == 1) {
System.out.println("我是张三,男,年龄32岁。电话是13600770077。工号是33006,2019年10月25日入职。就职于数信学院。是一名教师,数学专业,讲师职称。");
// System.out.println(fac.toString());
} else if (i == 2) {
System.out.println("我是李四,女,年龄19岁。电话是18000009999。学号是20201103,来自202011班。担任班长职务。");
// System.out.println(stu.toString());
} else if (i == 3) {
System.out.println("我是王五,男,年龄27岁。电话是18966666666。工号是32011,2015年6月17日入职。就职于航制学院。是一名教务员。");
// System.out.print(sta.toString());
} else {
System.out.println("Wrong Format");
}
}
}
|