6-1 Person类 (20分)
构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息
输入描述:
姓名(name),性别(sex)和年龄(age)
输出描述:
用户信息
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
Person p = new Person();
p.setName(name);
p.setSex(sex);
p.setAge(age);
p.print();
scan.close();
}
}
/* 你的代码被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
Lucy male 23
输出样例:
在这里给出相应的输出。例如:
name:Lucy; sex:male; age:23
static class Person
{
private String name;
private String sex;
private int age;
public void setName(String name)
{
this.name=name;
}
public void setSex(String sex)
{
this.sex=sex;
}
public void setAge(int age) {
this.age = age;
}
public void print()
{
System.out.print("name:"+name+"; ");
System.out.print("sex:"+sex+"; ");
System.out.print("age:"+age);
}
}
6-2 Person类2 (20分)
在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄,提供print函数打印其信息
输入描述:
姓名(name),性别(sex)和年龄(age)
输出描述:
用户信息
裁判测试程序:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
Person p = new Person(name,sex,age);
p.print();
scan.close();
}
}
/* 你的代码被嵌在这里*/
输入样例:
在这里给出一组输入。例如:
Lucy male 23
输出样例:
在这里给出相应的输出。例如:
name:Lucy; sex:male; age:23
ans:
class Person
{
public Person(String name,String sex,int age)
{
this.name=name;
this.sex=sex;
this.age=age;
}
private String name;
private String sex;
private int age;
public void setName(String name)
{
this.name=name;
}
public void setSex(String sex)
{
this.sex=sex;
}
public void setAge(int age) {
this.age = age;
}
public void print()
{
System.out.print("name:"+name+"; ");
System.out.print("sex:"+sex+"; ");
System.out.print("age:"+age);
}
}
6-3 学生类 (20分)
有一个学生类的结构如下:
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);
}
}
输入样例:
在这里给出一组输入。例如:
1 wang 89
2 liu 78
3 ma 90
输出样例:
在这里给出相应的输出。例如:
3 ma 90
1 wang 89
2 liu 78
ans:
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
Student[] arr=new Student[3];
int[] b=new int[3];
for(int i=0;i<3;i++) {
int no = s.nextInt();
String name = s.next();
int score = s.nextInt();
arr[i] = new Student(no, name, score);
b[i]=score;
}
//修改冒泡排序
//控制多少轮
for (int i = 1; i < arr.length; i++) {
//控制每一轮的次数
for (int j = 0; j <= arr.length - 1 - i; j++) {
if (b[j]> b[j+1]) {//冒泡排序,b[j]与b[j+1]比较的是交换后的值
Student temp=new Student(0,"0",0);//Student temp,error,未赋值
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
int t;//成绩排序
t=b[j];b[j]=b[j+1];b[j+1]=t;
}
}
}
for(int j=2;j>=0;j--)
{
arr[j].print();
}
}
}
6-5 家具类 (20分)
构建家具类Furniture,包括长、宽、高,均为整数(cm)。提供相应的构造函数和get、set函数。 Main函数里构造家具对象,并调用相应的函数。
输入描述:
家具对象的长宽高
输出描述:
家具对象的相关属性
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Furniture f = new Furniture(sc.nextInt(),sc.nextInt(),sc.nextInt());
System.out.println(f.getHeight());
System.out.println(f.getLength());
System.out.println(f.getWidth());
}
}
/* 你的代码被嵌在这里*/
输入样例:
在这里给出一组输入。例如:
50 60 100
输出样例:
在这里给出相应的输出。例如:
100
50
60
class Furniture
{
int length;
int width;
int height;
public Furniture(int a,int b,int c)
{
length=a;
width=b;
height=c;
}
void setHeight(int a)
{
height=a;
}
void setLength(int b)
{
length=b;
}
void setWidth(int c)
{
width=c;
}
int getHeight()
{
return height;
}
int getLength()
{
return length;
}
int getWidth()
{
return width;
}
}
7-1 MyDate类 (20分)
构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0 在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果
输入格式:
两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日
输出格式:
当前日期对象的信息,当前对象和待比较日期对象的比较结果
输入样例:
在这里给出一组输入。例如:
2008 6 12 2009 6 22
输出样例:
在这里给出相应的输出。例如:
6/12/2008 -1
ans:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int year1=sc.nextInt();
int month1=sc.nextInt();
int day1=sc.nextInt();
MyDate d1= new MyDate(year1,month1,day1);
int year2=sc.nextInt();
int month2=sc.nextInt();
int day2=sc.nextInt();
MyDate d2=new MyDate(year2,month2,day2);
int flag;
if(d1.getYear()>d2.getYear()||d1.getMonth()>d2.getMonth()||d1.getDay()>d2.getDay())
flag=1;
else if(d1.getYear()==d2.getYear()&&d1.getMonth()==d2.getMonth()&&d1.getDay()==d2.getDay())
flag=0;
else
flag=-1;
d1.print();
System.out.print(" "+flag);
sc.close();
}
static class MyDate
{
int year;
int month;
int day;
public MyDate(int year,int month,int day)
{
this.year=year;
this.month=month;
this.day=day;
}
void setYear(int y)
{
year=y;
}
void setMonth(int m)
{
month=m;
}
void setDay(int d)
{
day=d;
}
int getYear()
{
return year;
}
int getMonth()
{
return month;
}
int getDay()
{
return day;
}
void print()
{
System.out.print(getMonth()+"/"+getDay()+"/"+getYear());
}
}
}
7-2 Person类3 (20分)
在Person类的基础上,添加一个静态变量avgAge表示所有Person对象的平均年龄(整数),提供方法getAvgAge能够读取该静态变量。 main函数中,构造三个Person类的对象,读入他们的信息,并输出他们的平均年龄
输入格式:
多个用户信息
输出格式:
平均年龄
输入样例:
在这里给出一组输入。例如:
a male 23
b female 21
c male 22
输出样例:
在这里给出相应的输出。例如:
22
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//int n=scan.nextInt();
for(int i=0;i<3;i++)
{
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
Person p = new Person(name,sex,age);
}
System.out.print(Person.getAverage());
scan.close();
}
public static class Person
{
public Person(String name,String sex,int age)
{
this.name=name;
this.sex=sex;
this.age=age;
average+=age;
aver = average/3;
}
private String name;
private String sex;
private int age;
private static int average=0;
private static int aver;
public void setName(String name)
{
this.name=name;
}
public void setSex(String sex)
{
this.sex=sex;
}
public void setAge(int age) {
this.age = age;
}
public String getName()
{
return name;
}
public String getSex()
{
return sex;
}
public int getAge()
{
return age;
}
public static int getAverage() {
return aver;
}
}
}
6-1 汽车类 (20分)
编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为off,速度为0,speedUp和slowDown可以调整汽车的速度,每调用一次汽车速度改变10(加速增10,减速减10),汽车启动后才能加减速,加速上限为160,减速下限为0,汽车速度减为0后才能停止,给出汽车类的定义。 Main函数中构造一个汽车对象,并对该对象进行操作,各个操作的编号为:
1.start
2.stop
3.speedup
4.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()
{
status="on";
}
public void stop()
{
if(speed==0)
status="off";
}
public void speedUp()
{
if(status=="on")
speed+=10;
if(speed>=160)
{
speed=160;
}
}
public void slowDown()
{
if(status=="on")
speed-=10;
if(speed<=0)
{
speed=0;
}
}
}
6-2 设计直线类 (20分)
两点可以确定一条直线,请设计一个直线类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,y;
public Point(double x,double y)
{
this.x=x;
this.y=y;
}
public void SetX(double x)
{
this.x=x;
}
public void SetY(double y)
{
this.y=y;
}
public double GetX()
{
return x;
}
public double GetY()
{
return y;
}
}
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));
}
}
6-3 学生数统计 (20分)
构造类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 Student(String name,int sex,int age)
{
this.name=name;
this.sex=sex;
this.age=age;
if(getSex()==1)
malenumber++;
if(getSex()==0)
femalenumber++;
}
private String name;
private static int sex;
private int age;
static int malenumber=0;
static int femalenumber=0;
public void setName(String name)
{
this.name=name;
}
public void setSex(int sex)
{
this.sex=sex;
}
public void setAge(int age) {
this.age = age;
}
public String getName()
{
return name;
}
public static int getSex()
{
return sex;
}
public int getAge()
{
return age;
}
public static int getMaleCount()
{
return malenumber;
}
public static int getFemaleCount()
{
return femalenumber;
}
}
7-1 设计BankAccount类 (20分)
设计一个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 BankAccout
{
int balance;
public BankAccout()
{
balance=0;
}
public BankAccout(int b)
{
this.balance=b;
}
public int getBalance()
{
return balance;
}
public int withdraw(int amount)
{
if(amount<=this.balance)
this.balance -= amount;
return this.balance;
}
public int deposit(int amonut)
{
this.balance+=amonut;
return this.balance;
}
}
class Main
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int b = s.nextInt();
BankAccout account=new BankAccout(b);
int n = s.nextInt();
for (int i=0;i<n;i++) {
int a = s.nextInt();
int money=s.nextInt();
switch (a) {
case 1: account.deposit(money);break;
case 2: account.withdraw(money);break;
default:break;
}
System.out.println(account.getBalance());
}
}
}