Java第三次实验

1. 本章学习总结
这份是Java第3次实验提纲,聚焦面向对象1的基本概念与继承基础。,还有PTA相关任务,像构造方法与toString、构造方法与初始化块的编程题,程序填空、编程题、函数题,以及使用jar包(调用外部jar包),另外也涉及IDEA的使用。
2. 书面作业
2.1 构造方法与toString

点击查看代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Person[] persons = new Person[n];
        
        for (int i = 0; i < n; i++) {
            String name = scanner.next();
            int age = scanner.nextInt();
            boolean gender = scanner.nextBoolean();
            persons[i] = new Person(name, age, gender);
        }
        
        for (int i = n - 1; i >= 0; i--) {
            System.out.println(persons[i]);
        }
        
        Person p = new Person();
        System.out.println(p);
        
        scanner.close();
    }
}

class Person {
    private String name;
    private int age;
    private boolean gender;
    private int id;
    
    public Person() {
        System.out.println("This is constructor");
        System.out.println(name + "," + age + "," + gender + "," + id);
    }
    
    public Person(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
    
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public boolean isGender() {
        return gender;
    }
    
    public void setGender(boolean gender) {
        this.gender = gender;
    }
    
    public int getId() {
        return id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
}
2.2 构造方法与初始化块
点击查看代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        Person[] persons = new Person[n];
        
        for (int i = 0; i < n; i++) {
            String name = scanner.next();
            int age = scanner.nextInt();
            boolean gender = scanner.nextBoolean();
            persons[i] = new Person(name, age, gender);
        }
        
        for (int i = n - 1; i >= 0; i--) {
            System.out.println(persons[i]);
        }
        
        Person p = new Person();
        System.out.println(p);
        
        scanner.close();
    }
}

class Person {
    private String name;
    private boolean gender;
    private int age;
    private int id;
    
    private static int count = 0;
    
    static {
        System.out.println("This is static initialization block");
    }
    
    {
        this.id = count++;
        System.out.println("This is initialization block, id is " + this.id);
    }
    
    public Person() {
        System.out.println("This is constructor");
        System.out.println(name + "," + age + "," + gender + "," + id);
    }
    
    public Person(String name, int age, boolean gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", gender=" + gender + ", id=" + id + "]";
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public boolean isGender() {
        return gender;
    }
    
    public void setGender(boolean gender) {
        this.gender = gender;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public int getId() {
        return id;
    }
    
    public void setId(int id) {
        this.id = id;
    }
}
2.3 程序填空
点击查看代码
public Rectangle() {
        this(5, 6);
    }
    public Rectangle(int width, int length) {
        this.width = width;
        this.length = length;
    }
    public String toString() {
        return String.format("width=%d,length=%d", this.width, this.length);
    }
2.4 形状
点击查看代码
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        Rectangle[] rectangles = new Rectangle[2];
        for (int i = 0; i < 2; i++) {
            int width = scanner.nextInt();
            int length = scanner.nextInt();
            rectangles[i] = new Rectangle(width, length);
        }
        
        Circle[] circles = new Circle[2];
        for (int i = 0; i < 2; i++) {
            int radius = scanner.nextInt();
            circles[i] = new Circle(radius);
        }
        
        int totalPerimeter = 0;
        int totalArea = 0;
        
        for (Rectangle rect : rectangles) {
            totalPerimeter += rect.getPerimeter();
            totalArea += rect.getArea();
        }
        
        for (Circle circle : circles) {
            totalPerimeter += circle.getPerimeter();
            totalArea += circle.getArea();
        }
        
        System.out.println(totalPerimeter);
        System.out.println(totalArea);
        System.out.println(Arrays.deepToString(rectangles));
        System.out.println(Arrays.deepToString(circles));
        
        scanner.close();
    }
}

class Rectangle {
    private int width;
    private int length;
    
    public Rectangle(int width, int length) {
        this.width = width;
        this.length = length;
    }
    
    public int getPerimeter() {
        return 2 * (width + length);
    }
    
    public int getArea() {
        return width * length;
    }
    
    @Override
    public String toString() {
        return "Rectangle [width=" + width + ", length=" + length + "]";
    }
}

class Circle {
    private int radius;
    
    public Circle(int radius) {
        this.radius = radius;
    }
    
    public int getPerimeter() {
        return (int)(2 * Math.PI * radius);
    }
    
    public int getArea() {
        return (int)(Math.PI * radius * radius);
    }
    
    @Override
    public String toString() {
        return "Circle [radius=" + radius + "]";
    }
}
2.5 函数题-分数
点击查看代码
class Fraction {
    private int numerator;
    private int denominator;
    
    public Fraction(int a, int b) {
        this.numerator = a;
        this.denominator = b;
        simplify();
    }
    
    private int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
    
    private void simplify() {
        if (numerator == 0) {
            denominator = 1;
            return;
        }
        
        int g = gcd(Math.abs(numerator), Math.abs(denominator));
        numerator /= g;
        denominator /= g;
        
        if (denominator < 0) {
            numerator = -numerator;
            denominator = -denominator;
        }
    }
    
    public double toDouble() {
        return (double) numerator / denominator;
    }
    
    public Fraction plus(Fraction r) {
        int newNumerator = this.numerator * r.denominator + r.numerator * this.denominator;
        int newDenominator = this.denominator * r.denominator;
        return new Fraction(newNumerator, newDenominator);
    }
    
    public Fraction multiply(Fraction r) {
        int newNumerator = this.numerator * r.numerator;
        int newDenominator = this.denominator * r.denominator;
        return new Fraction(newNumerator, newDenominator);
    }
    
    @Override
    public String toString() {
        if (denominator == 1) {
            return String.valueOf(numerator);
        }
        return numerator + "/" + denominator;
    }
}
**3. PTA实验总结及码云上代码提交记录**

QQ20251002-134248

QQ20251002-134308

QQ20251002-134337

QQ20251002-134350
掌握static属性、初始化块(静态/非静态)执行时机;理解this关键字、toString方法用法;体会多态对代码扩展性的作用,以及抽象类、ArrayList、Objects工具类的应用。学会在IDEA中打包jar包,及在其他项目中导入并调用其中类的方法;了解类的访问权限对jar包使用的影响。通过实验巩固了Java类与对象核心概念,掌握了jar包工程化操作,为后续开发奠定基础。

posted @ 2025-10-02 13:50  arctic1  阅读(9)  评论(0)    收藏  举报