2-1汽车类
编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为off,速度为0,speedUp和slowDown可以调整汽车的速度,每调用一次汽车速度改变10(加速增10,减速减10),汽车启动后才能加减速,加速上限为160,减速下限为0,汽车速度减为0后才能停止,给出汽车类的定义。
Main函数中构造一个汽车对象,并对该对象进行操作,各个操作的编号为:
- start
- stop
- speedup
- slowdown
操作完成后打印出汽车的状态和速度。
输入描述:
操作
输出描述:
汽车的状态和速度
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
Car c = new Car();
for (int i=0;i<n;i++) {
int a = s.nextInt();
switch (a) {
case 1: c.start(); break;
case 2: c.stop(); break;
case 3: c.speedUp(); break;
case 4: c.slowDown(); break;
}
}
System.out.print(c.status + " ");
System.out.println(c.speed);
}
}
/* 你的代码被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
8
1 3 3 4 3 4 4 2
输出样例:
在这里给出相应的输出。例如:
off 0
答案:
class Car {
int speed = 0;
String status = "off";
public void start() {
speed=0;
status="on";
}
public void stop() {
if(speed==0) {
status = "off";
}
}
public void speedUp() {
if(status=="on"&&speed<=150) {
speed+=10;
}
}
public void slowDown() {
if(status=="on"&&speed>=10) {
speed-=10;
}
}
}
2-2设计直线类
两点可以确定一条直线,请设计一个直线类Line,需要通过两个点Point对象来确定。
设计类Point,包含两个坐标值,提供必要的构造函数和其他辅助函数
设计类Line,包含两个点,提供必要的构造函数和其他辅助函数
为Line提供一个getLength方法返回直线的长度
在Main类的main方法中,读入2对Point的坐标,输出2对Point所表示的直线的长度,保留两位小数(可用System.out.printf)
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Point p1 = new Point(sc.nextDouble(),sc.nextDouble());
Point p2 = new Point(sc.nextDouble(),sc.nextDouble());
Line l = new Line(p1,p2);
System.out.printf("%.2f",l.getLength());
}
}
/* 请在这里填写答案 */
输入样例:
23.2 22.1 12.2 3.2
输出样例:
21.87
class Point {
double x;
double y;
public Point (double a,double b) {
this.x =a;
this.y=b;
}
}
class Line {
Point p1,p2;
public Line(Point p1,Point p2) {
this.p1=p1;
this.p2 =p2;
}
public double getLength()
{
return Math.sqrt(Math.pow((p1.x-p2.x), 2)+Math.pow((p1.y-p2.y), 2));
}
}
2-3 学生数统计
构造类Student,包含姓名,性别,年龄。提供必要的构造函数和其他成员函数。
提供静态函数getMaleCount,getFemaleCount,能够获得所有在main函数中构造的Student对象中男生和女生的数量。
main函数中先读取学生个数n,而后构造n个学生对象,最后分别打印其中男生和女生的人数。(输入的三个字段用空格分开,名字内部没有空格,性别用数字表示,1为男生,0为女生)
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;i++){
Student s = new Student(sc.next(),sc.nextInt(), sc.nextInt());
}
System.out.println("number of male students:" + Student.getMaleCount() );
System.out.println("number of female students:" + Student.getFemaleCount() );
}
}
/* 请在这里填写答案 */
输入样例:
5
LiuMing 0 20
FangDa 1 19
DaShan 0 20
ChenHuang 0 21
DeLi 0 20
输出样例:
number of male students:1
number of female students:4
答案:
class Student
{
public String name;
public int sex;
public int age;
static int m=0;
static int f=0;
public Student(String _name,int _sex,int _age)
{
this.name=_name;
this.sex=_sex;
this.age=_age;
if(_sex==1)
m++;
if(_sex==0)
f++;
}
public static int getMaleCount()
{
return m;
}
public static int getFemaleCount()
{
return f;
}
}
2-4设计BankAccount类
设计一个BankAccount类,这个类包括:
(1)一个int型的balance表时账户余额。
(2)一个无参构造方法,将账户余额初始化为0。
(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。
(4)一个getBlance()方法,返回账户余额。
(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。
(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。
提供main函数,构造一个账户对象,并对其进行存取款操作。
其中操作类型类型为1表示存款,2表示取款,每次操作后都打印余额
输入格式:
账户余额
操作个数
操作类型 操作金额
输出格式:
每次操作后的余额
输入样例:
在这里给出一组输入。例如:
0
4
1 100
1 200
2 100
2 100
输出样例:
在这里给出相应的输出。例如:
100
300
200
100
答案:
import java.util.Scanner;
class BankAccount{
int blance;
public BankAccount(){
blance=0;
}
public BankAccount(int l){
blance=l;
}
public int getBlance(){
return blance;
}
public void withDraw(int account){
if(blance>=account)
blance-=account;
}
public void deposit(int account){
blance+=account;
}
}
public class Main{
public static void main(String[] args){
int blance;
int n;
int oppo;
int account;
Scanner sc=new Scanner(System.in);
blance=sc.nextInt();
BankAccount b=new BankAccount(blance);
n=sc.nextInt();
for(int i=0;i<n;i++){
oppo=sc.nextInt();
if(oppo==1){
b.deposit(sc.nextInt());
}
else if(oppo==2)
b.withDraw(sc.nextInt());
System.out.println(b.getBlance());
}
}
}
2-5设计一个”无名的粉“类
为“无名的粉”写一个类:class WuMingFen 要求:
有三个属性:面码:String theMa 粉的分量(两):int quantity 是否带汤:boolean likeSoup;
写一个构造方法,以便于简化初始化过程,如:
WuMingFen f1 = new WuMingFen("牛肉",3,true);;
重载构造方法,使得初始化过程可以多样化:
WuMingFen f2 = new WuMingFen("牛肉",2);;
如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的?
WuMingFen f3 = new WuMingFen();;
写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。
系统参考程序代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String theMa = sc.next();
int quantity = sc.nextInt();
boolean likeSoup = sc.nextBoolean();
c
//使用三个参数的构造方法创建WuMingFen对象 取名 f1
//使用两个参数的构造方法创建WuMingFen对象 取名 f2
//使用无参构造方法创建WuMingFen对象 取名 f3
//分别调用三个类的 check方法
/********** End **********/
}
}
/********** Begin **********/
//WuMingFen 类实现部分
/********** End **********/
输入格式:
输入面码、粉的份量、是否带汤。
输出格式:
面码:xxxx,粉的份量:xx两,是否带汤:xxxx
面码:xxxx,粉的份量:xx两,是否带汤:false
面码:酸辣,粉的份量:2两,是否带汤:true
输入样例:
牛肉 3 true
输出样例:
面码:牛肉,粉的份量:3两,是否带汤:true
面码:牛肉,粉的份量:3两,是否带汤:false
面码:酸辣,粉的份量:2两,是否带汤:true
答案:
import java.util.Scanner;
class WuMingFen{
String theMa;
int quantity;
boolean likeSoup;
public WuMingFen(String n,int q,boolean l){
theMa=n;
quantity=q;
likeSoup=l;
}
public WuMingFen(String n,int q){
theMa=n;
quantity=q;
}
public WuMingFen(){
theMa="酸辣";
quantity=2;
likeSoup=true;
}
public void check(){
System.out.println("面码:"+theMa+",粉的份量:"+quantity+"两,是否带汤:"+likeSoup);
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String theMa = sc.next();
int quantity = sc.nextInt();
boolean likeSoup = sc.nextBoolean();
WuMingFen f1 = new WuMingFen(theMa,quantity,likeSoup);
WuMingFen f2 = new WuMingFen(theMa,quantity);
WuMingFen f3 = new WuMingFen();
//分别调用三个类的 check方法
f1.check();
f2.check();
f3.check();
}
}