116 - Person类
Description
构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息
Input
姓名(name),性别(sex)和年龄(age)
Output
用户信息
Sample Input
Lucy male 23
Sample Output
name:Lucy; sex:male; age:23
HINT
pre append code
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();
}
}
MyAnswer
class Person {
private String name;
private String sex;
private int age;
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print() {
System.out.println("name:" + name + "; sex:" + sex + "; age:" + age);
}
}
117 - Person类2
Description
在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄,提供print函数打印其信息
Input
姓名(name),性别(sex)和年龄(age)
Output
用户信息
Sample Input
Lucy male 23
Sample Output
name:Lucy; sex:male; age:23
HINT
Pre Append Code
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();
}
}
MyAnswer
class Person {
private String name;
private String sex;
private int age;
Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void print() {
System.out.println("name:" + name + "; sex:" + sex + "; age:" + age);
}
}
118 - 学生类
Description
有一个学生类的结构如下:
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函数完成如下功能:
从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出
Input
三个学生的学号、姓名、成绩
Output
由高到低排列输出的三个学生信息
Sample Input
1 wang 89
2 liu 78
3 ma 90
Sample Output
3 ma 90
1 wang 89
2 liu 78
HINT
Post Append Code
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);
}
}
MyAnswer
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Student[] s = new Student[3];
Scanner scan = new Scanner(System.in);
int i;
for(i=0; i<3; i++){
int no = scan.nextInt();
String name = scan.next();
int score = scan.nextInt();
s[i] = new Student(no, name, score);
}
sort(s);
for(i=0; i<3; i++){
s[i].print();
}
}
public static void sort(Student[] s){
int i,j;
Student tmp;
for(i=0; i<2; i++){
for(j=1; j<3; j++){
if(s[i].getScore() < s[j].getScore()){
tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
}
}
119 - MyDate类
Description
构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0
在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果
Input
两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日
Output
当前日期对象的信息,当前对象和待比较日期对象的比较结果
Sample Input
2008 6 12 2009 6 22
Sample Output
6/12/2008 -1
HINT
MyAnswer
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int y1 = scan.nextInt();
int m1 = scan.nextInt();
int d1 = scan.nextInt();
MyDate date1 = new MyDate(y1,m1,d1);
int y2 = scan.nextInt();
int m2 = scan.nextInt();
int d2 = scan.nextInt();
MyDate date2 = new MyDate(y2,m2,d2);
date1.print();
System.out.println(" "+date1.compare(date2));
}
}
class MyDate {
private int day;
private int month;
private int year;
MyDate(int year, int month, int day){
setYear(year);
setMonth(month);
setDay(day);
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
public void setDay(int day) {
this.day = day;
}
public void setMonth(int month) {
this.month = month;
}
public void setYear(int year) {
this.year = year;
}
public void print(){
System.out.print(getMonth()+"/"+getDay()+"/"+getYear());
}
public int compare(MyDate d){
if(this.getYear()>d.getYear()){
return 1;
}
else if(this.getYear()<d.getYear()){
return -1;
}
else{
if(this.getMonth()>d.getMonth()){
return 1;
}
else if(this.getMonth()<d.getMonth()){
return -1;
}
else{
if (this.getDay() <= d.getDay()) {
if(this.getDay()<d.getDay()){
return -1;
}
else{
return 0;
}
} else {
return 1;
}
}
}
}
}
120 - Person类3
Description
在Person类的基础上,添加一个静态变量avgAge表示所有Person对象的平均年龄(整数),提供方法getAvgAge能够读取该静态变量。
main函数中,构造三个Person类的对象,读入他们的信息,并输出他们的平均年龄
Input
多个用户信息
Output
平均年龄
Sample Input
a male 23
b female 21
c male 22
Sample Output
22
HINT
在构造函数里对静态变量avgAge进行更新
MyAnswer
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int i=0;
Person[] p = new Person[3];
Scanner scan = new Scanner(System.in);
for(i=0;i<3;i++){
String name = scan.next();
String sex = scan.next();
int age = scan.nextInt();
p[i] = new Person(name, sex, age);
}
scan.close();
System.out.println(p[2].getAvgAge());
}
}
class Person {
private String name;
private String sex;
private int age;
public static int avgAge = 0;
Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
avgAge += age;
}
public static int getAvgAge(){
return avgAge/3;
}
}
123 - 长方形长方体类
Description
定义一个长方形类Rectangle,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方体类,拥有长、宽、高属性,提供构造函数,getPerimeter函数计算所有边的周长,getArea函数计算表面积,新增getVolume函数,计算体积
在main函数中,分别构造长方形类和长方体类的对象,并输出他们的周长、面积、体积,保留两位小数
Input
长方形类的长、宽
长方体类的长、宽、高
Output
长方形的周长和面积
长方体的周长,表面积,体积
Sample Input
1 2
1 2 3
Sample Output
6.00 2.00
24.00 22.00 6.00
HINT
Pre Append Code
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double length = scan.nextDouble();
double wide = scan.nextDouble();
Rectangle r = new Rectangle(length,wide);
System.out.printf("%.2f",r.getPerimeter());
System.out.printf("%.2f",r.getArea());
length = scan.nextDouble();
wide = scan.nextDouble();
double height = scan.nextDouble();
Cuboid c = new Cuboid (length, wide, height);
System.out.printf("%.2f",c.getPerimeter());
System.out.printf("%.2f",c.getArea());
System.out.printf("%.2f",c.getVolume());
scan.close();
}
}
MyAnswer
class Rectangle {
double length;
double width;
Rectangle(double length, double width){
this.length = length;
this.width = width;
}
public double getPerimeter(){
return 2*(length+width);
}
public double getArea(){
return length*width;
}
}
class Cuboid extends Rectangle {
double height;
Cuboid(double l, double w, double h) {
super(l,w);
this.height = h;
}
public double getPerimeter(){
return 4*(length+width+height);
}
public double getArea(){
return 2*(super.getArea()+length*height+width*height);
}
public double getVolume(){
return super.getArea()*height;
}
}
125 - 学生、大学生、研究生类
Description
定义Student学生类,拥有学号、姓名、性别属性,提供构造函数,以及相应属性的get set函数,提供函数attendClass(String className)表示上课。
定义CollegeStudent大学生类继承自Student类,拥有新增属性专业,提供构造函数,提供新增属性的get和set函数
定义GraduateStudent研究生类继承自CollegeStudent类,拥有新增属性导师,提供构造函数,提供新增属性的get和set函数,提供函数doResearch() 表示做研究(打印xx is doing research)。
main函数中对构造的类进行测试
Input
学生类信息,学号、姓名、性别
大学生类信息,学号、姓名、性别、专业
研究生类信息,学号、姓名、性别、专业、导师
Output
学生类信息
大学生类信息
研究生类信息
Sample Input
1 liu female
2 chen female cs
3 li male sc wang
Sample Output
no: 1
name: liu
sex: female
no: 2
name: chen
sex: female
major: cs
no: 3
name: li
sex: male
major: sc
supervisor: wang
li is doing research
HINT
Pre Append Code
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int no = scan.nextInt();
String name = scan.next();
String sex = scan.next();
Student s = new Student(no, name, sex);
s.print();
no = scan.nextInt();
name = scan.next();
sex = scan.next();
String major = scan.next();
CollegeStudent c = new CollegeStudent(no, name, sex, major);
c.print();
no = scan.nextInt();
name = scan.next();
sex = scan.next();
major = scan.next();
String supervisor = scan.next();
GraduateStudent g = new GraduateStudent(no, name, sex, major, supervisor );
g.print();
g.doResearch();
scan.close();
}
}
MyAnswer
class Student {
int no;
String name;
String sex;
Student(int no, String name, String sex){
this.name = name;
this.no = no;
this.sex = sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setName(String name) {
this.name = name;
}
public void setNo(int no) {
this.no = no;
}
public int getNo() {
return no;
}
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public void print(){
System.out.println("no: "+getNo());
System.out.println("name: "+getName());
System.out.println("sex: "+getSex());
}
}
class CollegeStudent extends Student {
String major;
CollegeStudent(int no, String name, String sex, String major){
super(no,name,sex);
this.major = major;
}
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public void print(){
super.print();
System.out.println("major: "+major);
}
}
class GraduateStudent extends CollegeStudent {
String supervisor;
GraduateStudent(int no, String name, String sex, String major, String supervisor){
super(no, name, sex, major);
this.supervisor = supervisor;
}
public String getSupervisor() {
return supervisor;
}
public void setSupervisor(String supervisor) {
this.supervisor = supervisor;
}
public void print(){
super.print();
System.out.println("supervisor: "+supervisor);
}
public void doResearch(){
System.out.println(getName()+" is doing research");
}
}
129 - Shape类
Description
定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
在main函数中,分别构造三个子类的对象,并输出他们的周长、面积.
Input
正方形类的边长
长方形类的长宽
圆类的半径
Output
正方形的周长、面积
长方形的周长、面积
圆形的周长、面积
Sample Input
1
1 2
2
Sample Output
4.00 1.00
6.00 2.00
12.57 12.57
HINT
用System.out.printf("%.2f",d)进行格式化输出
Pre Append Code
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double length = scan.nextDouble();
Square s = new Square(length);
System.out.printf("%.2f ",s.getPerimeter());
System.out.printf("%.2f\n",s.getArea());
length = scan.nextDouble();
double wide = scan.nextDouble();
Rectangle r = new Rectangle(length,wide);
System.out.printf("%.2f ",r.getPerimeter());
System.out.printf("%.2f\n",r.getArea());
double radius = scan.nextDouble();
Circle c = new Circle(radius);
System.out.printf("%.2f ",c.getPerimeter());
System.out.printf("%.2f\n",c.getArea());
scan.close();
}
}
MyAnswer
abstract class Shape{
public abstract double getPerimeter();
public abstract double getArea();
}
class Square extends Shape {
double length;
Square(double length){
this.length = length;
}
@Override
public double getPerimeter(){
return 4*length;
}
@Override
public double getArea() {
return length*length;
}
}
class Rectangle extends Square{
double width;
Rectangle(double length,double width){
super(length);
this.width = width;
}
@Override
public double getArea() {
return length*width;
}
@Override
public double getPerimeter() {
return 2*(length+width);
}
}
class Circle extends Shape {
double r;
Circle(double rr){
this.r = rr;
}
@Override
public double getPerimeter() {
return 2*Math.PI*r;
}
@Override
public double getArea() {
return Math.PI*r*r;
}
}
网友评论