今天复习的重点是Java类实现。
目录
1-1 Java类实现——小狗类
构造一个Puppy类,该类有一个age变量保存年龄,name变量存放名字,逻辑类型的变量male表示性别(true表示性别为male,否则为female),可以通过getter方法进行访问。该类具有setAge、getAge、getName和isMale方法。
请阅读和分析裁判测试程序样例和输入输出样例,完成Puppy类的代码。
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
String strName = myScan.next();
String sex = myScan.next();
Puppy myPuppy = new Puppy(strName, sex.equals("male"));
// 通过方法来设定age
myPuppy.setAge(myScan.nextShort());
// 调用方法获取 age
System.out.println("Puppy's age is : " + myPuppy.getAge());
//调用方法获取 name
System.out.println("Puppy's name is : " + myPuppy.getName());
//调用方法获取性别
System.out.println("Puppy's sex is : " + (myPuppy.isMale() ? "male" : "female"));
}
}
/* 请在这里填写答案 */
代码如下:
class Puppy{
int age;
String name;
boolean male;
public Puppy(){
}
public Puppy(String name, boolean male) {
this.name = name;
if (male){
this.male=true;
}else {
this.male=false;
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public boolean isMale(){
return male;
}
}
1-2 汽车类
编写汽车类,其功能有启动(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);
}}
/* 你的代码被嵌在这里 */
class Car{
String status = "off";
int speed = 0;
public Car() {
}
public void start(){
status = "on";
}
public void stop(){
status = "off";
}
public void speedUp(){
speed+=10;
}
public void slowDown(){
speed-=10;
}
}
1-3 学生类
有一个学生类的结构如下:
class Student {
private int no;
private String name;
private int score;
public Student(int _no, String _name, int _score) {
no = _no;
name = _name;
score = _score;
}
public int getNo() {return no;}
public String getName() {return name;}
public int getScore() {return score;}
public void print(){
System.out.println(no + " "+name+" "+score);
}
}
请构造main函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出
输入描述:
三个学生的学号、姓名、成绩
输出描述:
由高到低排列输出的三个学生信息
裁判测试程序样例:
/*你的代码被嵌在这里*/
class Student {
private int no;
private String name;
private int score;
public Student(int _no, String _name, int _score) {
no = _no;
name = _name;
score = _score;
}
public int getNo() {return no;}
public String getName() {return name;}
public int getScore() {return score;}
public void print(){
System.out.println(no + " "+name+" "+score);
}
}
代码如下:
public static void main(String[] args) {
//建立一个结构数组,用来存储3个学生的信息
Student[] stu = new Student[3];
Scanner sc = new Scanner(System.in);
//由于要排序,在比对时需要将学生放在一个相同的类型,也就是结构数组类型的中间变量中,故要new一个空的中间变量
Student temp = new Student(0, null, 0);
//输入3个学生的信息
for (int i = 0; i < stu.length; i++) {
stu[i] = new Student(sc.nextInt(), sc.next(),sc.nextInt());
}
//将3个学生按成绩进行排序
for (int i = 0; i < stu.length; i++) {
int max = stu[0].getScore();
if(stu[i].getScore()>max){
temp = stu[0];
stu[0]=stu[i];
stu[i]=stu[0];
}
}
//输出3个学生的信息
for (int i = 0; i < stu.length; i++) {
stu[i].print();
}
}
1-4 是否偶数
本题要求实现一个函数,判断输入的整数是否是偶数,如果是偶数,返回true,否则返回false。
函数接口定义:
public static boolean isOdd(int data)
说明:其中 data
是用户传入的参数。 data
的值不超过int
的范围。函数须返回 true
或者 false
。
裁判测试程序样例:
import java.util.Scanner;
public class Main {public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int data=in.nextInt();
System.out.println(isOdd(data));
}
/* 请在这里给出isOdd(i)函数 */
}
代码如下:
public static boolean isOdd(int data){
if(data%2==0){
return true;
}else{
return false;
}
}
1-5 定义游客类
定义游客类(其测试类已给出),要求如下:
一个景区根据游人的年龄收取不同价格的门票。请编写游客类,根据年龄段决定能够购买的门票价格并输出
- 当输入的年龄小于18或者大于60(不包括18,60)时,程序输出:
- 年龄为:XX,免费
- 当输入的年龄在18与60之间时,程序输出
- 年龄为:XX,价格为20元
裁判测试程序样例:
/* 请在这里填写答案 */
//使用该类创建使用对象的测试类如下:
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Tourist v = new Tourist();
v.age = input.nextInt();
v.show();
}
}
代码如下:
class Tourist{
int age;
public Tourist() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void show(){
if(age<18 || age>60){
System.out.println("年龄为:" + age + ",免费");
}else {
System.out.println("年龄为:" + age + ",价格为20元");
}
}
}
1-6 设计一个矩形类
设计一个名为Rectangle的类表示矩形。这个类包括:
两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.
一个无参构造方法。
一个为width和height指定值的矩形构造方法。
一个名为getArea()的方法返回这个矩形的面积。
一个名为getPerimeter()的方法返回这个矩形的周长。
类名为:rectangle
裁判测试程序样例:
import java.util.Scanner;
/* 你的代码将被嵌入到这里 */public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);double w = input.nextDouble();
double h = input.nextDouble();
Rectangle myRectangle = new Rectangle(w, h);
System.out.println(myRectangle.getArea());
System.out.println(myRectangle.getPerimeter());input.close();
}
}
代码如下:
class Rectangle{
double width=1;
double height=1;
public Rectangle() {
}
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea(){
return width*height;
}
public double getPerimeter(){
return 2*(width+height);
}
}