当前位置: 首页 > news >正文

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;}@Overridepublic 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);}@Overridepublic 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);}@Overridepublic 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包工程化操作,为后续开发奠定基础。

http://www.hskmm.com/?act=detail&tid=22903

相关文章:

  • 题解:P8028 [COCI 2021/2022 #3] Cijanobakterije
  • 2025 年水质测定仪厂家 TOP 企业品牌推荐排行榜,多参数,便携式,cod 快速,台式,污水,自来水,养殖,便携式总磷总氮,余氯总氯,废水水质测定仪公司推荐
  • 2025上海门头清洗服务公司权威推荐榜:专业高效服务口碑之选
  • 2025冷却塔厂家权威推荐榜:高效降温与耐用品质口碑之选
  • 使用IOT-Tree Server借助PPI协议连接西门子PLC S7-200 Smart
  • 2025公考培训机构权威推荐榜:实力师资与高效备考口碑之选
  • 2025微信机器人开发指南:API接口实战
  • Mapper.xml中SQL语句的用法示例
  • 实用指南:Redis 哈希槽解析
  • 解决vite构建下 disthtml 无法打开问题
  • UE RuntimeAudioImporter 插件推荐
  • 2025变电站架构制造厂家TOP企业品牌推荐排行榜,户外式变电站架构,户内式变电站架构,GIS 变电站架构,常规变电站架构,智能变电站架构公司推荐!
  • 使用虚幻引擎(UE5)制作开箱爆金币机制
  • 详细介绍:c++ 之多态虚函数表
  • 2025球墨铸铁管厂家TOP企业品牌推荐排行榜,k9球墨铸铁管,c25球墨铸铁管,c30球墨铸铁管,c级国标离心球墨铸铁管,c级供水球墨铸铁管,dn900球墨铸铁管公司推荐!
  • 10/2
  • 使用 VictoriaLogs 存储和查询服务器日志
  • 详细介绍:Git 基础 - 查看提交历史
  • PowerShell 提供程序和驱动器(七)
  • GreenHat 中文系列教程 2025.10 更新
  • 编译器细节:动态链接与静态链接行为分析
  • 2025热熔胶厂家 TOP 企业品牌推荐排行榜,书刊装订,珍珠棉,纸箱包装,环保,书本,试卷,票据,平摊,胶版纸,铜版纸热熔胶公司推荐!
  • cyberstrikelab-lab14
  • 使用虚幻引擎(UE5)制作开箱爆金币功能 - 详解
  • 2025 年自动喷砂机厂家 TOP 企业品牌推荐排行榜,从生产规模到技术创新,自动喷砂机推荐这十家公司!
  • 2025年光亮剂源头厂家最新推荐榜单:聚焦实力厂商,为电镀企业精选高口碑品牌
  • 深入解析:[linux仓库]深入解析Linux动态链接与动态库加载:理解背后的原理与技巧
  • AI行业应用:金融、医疗、教育、制造业的落地实践与技术创新 - 实践
  • 红色面纱
  • 创建 SQL Server 数据库