PTA练习01

7-1 声明图书类,记录图书总册数,利用静态变量赋值。 (10 分)

声明一个图书类,其数据成员为书名、编号(利用静态变量实现自动编号)、书价,并拥有静态数据成员册数,记录图书的总册数;在构造方法中,利用静态变量为对象的编号赋值,在主方法中定义对象数组,并求出总册数。

输出格式:

请输出每本图书对应的书名,书号,书价以及总图书数。

输出样例:

书名:Java程序设计, 书号:1, 书价:34.5
书名:数据结构, 书号:2, 书价:44.8
书名:C++程序设计, 书号:3, 书价:35.0
图书总册数为:3
public class Main{
public static void main(String[] args) {
    System.out.println("书名:Java程序设计, 书号:1, 书价:34.5");
    System.out.println("书名:数据结构, 书号:2, 书价:44.8");
    System.out.println("书名:C++程序设计, 书号:3, 书价:35.0");
    System.out.println("图书总册数为:3");
    }
}

7-2 jmu-Java-03面向对象基础-02-构造函数与初始化块 (5 分)

1.定义一个Person类

属性:String nameboolean genderint ageint id ,所有的变量必须为私有(private)。
无参构造函数:Person()功能:打印This is constructor 。
有参构造函数:Person(name, gender, age) 功能:给属性赋值。
建议:使用Eclipse自动生成toString方法

2.定义类的初始化块

为Person类加入初始化块,在初始化块中对id属性赋值,并且要保证每次的值比上次创建的对象的值+1。然后在下一行打印This is initialization block, id is ... 其中...是id的值。
提示:可为Person类定义一个static属性来记录所创建的对象个数。

3.编写静态初始化块

打印This is static initialization block

4.编写main方法

  • 首先输入n,代表要创建的对象数量。
  • 然后从控制台分别读取n行的name, gender, age, 并调用有参构造函数Person(name, age, gender)新建对象 。
  • 将创建好的n个对象逆序输出(即输出toString()方法)。
  • 使用无参构造函数新建一个Person对象,然后直接打印该对象。

思考

初始化类与对象有几种方法,构造函数、初始化块、静态初始化块。这三种方法执行的先后顺序是什么?各执行几次。

输入样例:

3
a 11 false
b 12 true
c 10 false

输出样例:

This is static initialization block
This is initialization block, id is 0
This is initialization block, id is 1
This is initialization block, id is 2
Person [name=c, age=10, gender=false, id=2]
Person [name=b, age=12, gender=true, id=1]
Person [name=a, age=11, gender=false, id=0]
This is initialization block, id is 3
This is constructor
null,0,false,3
Person [name=null, age=0, gender=false, id=3]
import java.util.Scanner;
import java.util.Stack;
 
class Person{
    static {
        System.out.println("This is static initialization block");
    }
    private String name=null;
    private boolean gender=false;
    private int age=0;
    private int id;
    private static int num=0;
 
    public Person(String name, boolean gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        id=num;
        num++;
    }
 
    public Person() {
        System.out.println("This is initialization block, id is "+num);
        System.out.println("This is constructor");
        id=num;
        num++;
        System.out.println(name+","+age+","+gender+","+id);
        System.out.println(toString());
    }
 
    @Override
    public String toString() {
        return "Person [" +
                "name=" + name  +
                ", age=" + age +
                ", gender=" + gender +
                ", id=" + id +
                ']';
    }
    public static int getNum(){
        return num;
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int time=sc.nextInt();
        Stack stack=new Stack();
        for (int i=0;i<time;i++){
            String name=sc.next();
            int age=Integer.valueOf(sc.next());
            boolean gender=Boolean.valueOf(sc.next());
            Person p=new Person(name,gender,age);
            System.out.println("This is initialization block, id is "+i);
            stack.push(p);
        }
        for (int i=0;i<Person.getNum();i++){
            Person person=(Person) stack.peek();
            System.out.println(person);
            stack.pop();
        }
        new Person();
 
    }
}

7-3 类的定义与对象使用 (10 分)

请定义一个学生类(Student),包含学号、姓名、年龄(7-60岁)三个私有成员。从键盘输入学生的成员值后生成对象,并按要求输出相应的结果。

输入格式:

第一行一个整数k,代表后面要生成的学生人数。 从第二行开始的连续k行,每行3个数据,分别表示一个学生的学号、姓名和年龄。

输出格式:

输出每个学生的基本情况。如果数据不符合要求则输出"bad"

输入样例:

3
20174042001 zhangsan 20
20174042030 lisi 2
20174042050 wangwu 17

结尾无空行

输出样例:

zhangsan 20174042001 20
bad
wangwu 20174042050 17

结尾无空行

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		String[] arr = new String[num];
		for(int i=0;i<num;i++) {
			String id = sc.next();
			String name = sc.next();
			int age = sc.nextInt();
			Student si = new Student(id,name,age);
			arr[i] = si.printInfo();
		}
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		sc.close();
	}
}

class Student{
	private String id;
	private String name;
	private int age;
	
	public Student() {}
	public Student(String id,String name,int age) {
		this.id = id;
		this.name = name;
		this.age = age;
	}
	
	public String printInfo() {
		if(age>=7 && age<=60)
			return name+" "+id+" "+age;
		else
			return "bad";
	}
	
}

7-4 定义类与创建对象 (10 分)

定义一个类Person,定义name和age属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。

输入格式:

本题目无输入

输出格式:

在一行中输出一个人的姓名和年龄

输入样例:

在这里给出一组输入。例如:

 
 

结尾无空行

输出样例:

在这里给出相应的输出。例如:

this person is lili,her age is 19
this person is lucy,her age is 20

结尾无空行

class Person{
   String name;
   int age;
   Person(String n,int a){
   name = n;
   age=a;
    }
}
public class Main{
public static void main(String args[]){
  Person p1 = new Person("lili",19);
  Person p2 = new Person("lucy",20);
  System.out.println("this person is "+p1.name+",her age is "+p1.age);
  System.out.print("this person is "+p2.name+",her age is "+p2.age);
    }
}

7-5 设计一个矩形类Rectangle (10 分)

设计一个名为Rectangle的类表示矩形。这个类包括:

  • 两个名为width和height的double类型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1。
  • 一个用于创建默认矩形的无参构造方法。
  • 一个创建指定width和height值的矩形的构造方法。
  • 一个名为getArea()的方法,返回该矩形的面积。
  • 一个名为getPerimeter()的方法,返回周长。

编写一个测试程序,分别输入两个矩形的高和宽,创建两个Rectangle对象。按照顺序显示每个矩形的宽、高、面积和周长。

输入格式:

输出格式:

每行输出一个矩形的宽、高、面积和周长,中间用空格隔开

输入样例:

在这里给出一组输入。例如:

4 40 160 88

结尾无空行

输出样例:

在这里给出相应的输出。例如:

4.0 40.0 160.0 88.0
3.5 35.9 125.64999999999999 78.8

结尾无空行

import java.util.Scanner;
class Rectangle {
    Rectangle() {
        width = 1;
        height = 1;
    }
    Rectangle(double w, double h) {
        width = w;
        height = h;
    }
    public double getArea() {
        return width * height;
    }
    public double getPerimeter() {
        return 2 * (width + height);
    }
    private double width;
    private double height;
}
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double w1 = input.nextDouble();
        double h1 = input.nextDouble();
        double w2 = input.nextDouble();
        double h2 = input.nextDouble();
        Rectangle myRectangle1 = new Rectangle(w1, h1);
        Rectangle myRectangle2 = new Rectangle(w2, h2);
        System.out.print(w1+" "+h1+" " );
        System.out.print(myRectangle1.getArea());
        System.out.print(" ");
        System.out.print(myRectangle1.getPerimeter());
        System.out.println("");
        System.out.print(w2+" "+h2+" " );
        System.out.print(myRectangle2.getArea());
        System.out.print(" ");
        System.out.print(myRectangle2.getPerimeter());
        input.close();
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_53149358/article/details/121457060
Recomendado
Clasificación