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

题目提供面向对象(OOP)的Java题解,每个题解都封装在独立的类中,体现封装性和可复用性。

题目提供面向对象(OOP)的Java题解,每个题解都封装在独立的类中,体现封装性和可复用性。

1. P5015 标题统计 - 面向对象题解

import java.util.Scanner;/*** 标题统计器类* 用于统计字符串中除空格和换行符外的有效字符数*/
class TitleCounter {private String title;/*** 构造函数* @param title 输入的标题字符串*/public TitleCounter(String title) {this.title = title;}/*** 统计有效字符数* @return 有效字符数量*/public int countValidCharacters() {int count = 0;for (int i = 0; i < title.length(); i++) {char c = title.charAt(i);// 排除空格和换行符if (c != ' ' && c != '\n') {count++;}}return count;}
}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 读取整行输入,包括空格String input = scanner.nextLine();// 创建标题统计器对象TitleCounter counter = new TitleCounter(input);// 计算并输出结果System.out.println(counter.countValidCharacters());scanner.close();}
}

2. P3741 小果的键盘 - 面向对象题解

import java.util.Scanner;/*** VK字符串优化器类* 用于计算通过改变至多一个字符后,字符串中VK出现的最大次数*/
class VKStringOptimizer {private String str;private int n;/*** 构造函数* @param n 字符串长度* @param str 字符串内容*/public VKStringOptimizer(int n, String str) {this.n = n;this.str = str;}/*** 计算字符串中VK出现的次数* @param s 输入字符串* @return VK出现次数*/private int countVK(String s) {int count = 0;for (int i = 0; i < s.length() - 1; i++) {if (s.charAt(i) == 'V' && s.charAt(i + 1) == 'K') {count++;}}return count;}/*** 计算最大VK出现次数* @return 最大VK出现次数*/public int getMaxVKCount() {if (n < 2) {return 0;}int originalCount = countVK(str);int maxCount = originalCount;// 尝试修改每个位置的字符char[] chars = str.toCharArray();for (int i = 0; i < n; i++) {char originalChar = chars[i];// 修改当前字符(V变K,K变V)chars[i] = (chars[i] == 'V') ? 'K' : 'V';// 计算修改后的VK数量String modifiedStr = new String(chars);int currentCount = countVK(modifiedStr);// 更新最大值if (currentCount > maxCount) {maxCount = currentCount;}// 恢复原始字符chars[i] = originalChar;}return maxCount;}
}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();String str = scanner.next();// 创建VK字符串优化器对象VKStringOptimizer optimizer = new VKStringOptimizer(n, str);// 计算并输出最大VK出现次数System.out.println(optimizer.getMaxVKCount());scanner.close();}
}

3. P1421 小玉买文具 - 面向对象题解

import java.util.Scanner;/*** 文具购买计算器类* 用于计算小玉最多能购买的签字笔数量*/
class StationeryCalculator {private int yuan;  // 元private int jiao;  // 角/*** 构造函数* @param yuan 元数* @param jiao 角数*/public StationeryCalculator(int yuan, int jiao) {this.yuan = yuan;this.jiao = jiao;}/*** 计算最多能购买的签字笔数量* @return 最大购买数量*/public int calculateMaxPens() {// 将金额统一为角int totalJiao = yuan * 10 + jiao;// 签字笔单价:1元9角 = 19角int penPrice = 19;// 计算最大购买数量(整除)return totalJiao / penPrice;}
}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();// 创建文具购买计算器对象StationeryCalculator calculator = new StationeryCalculator(a, b);// 计算并输出结果System.out.println(calculator.calculateMaxPens());scanner.close();}
}

4. P1425 小鱼的游泳时间 - 面向对象题解

import java.util.Scanner;/*** 游泳时间计算器类* 用于计算小鱼游泳的总时长*/
class SwimmingTimeCalculator {private int startHour;private int startMinute;private int endHour;private int endMinute;/*** 构造函数* @param startHour 开始小时* @param startMinute 开始分钟* @param endHour 结束小时* @param endMinute 结束分钟*/public SwimmingTimeCalculator(int startHour, int startMinute, int endHour, int endMinute) {this.startHour = startHour;this.startMinute = startMinute;this.endHour = endHour;this.endMinute = endMinute;}/*** 计算游泳总时长* @return 包含小时和分钟的数组 [小时, 分钟]*/public int[] calculateSwimmingTime() {// 将时间转换为总分钟数int startTotalMinutes = startHour * 60 + startMinute;int endTotalMinutes = endHour * 60 + endMinute;// 计算时间差(分钟)int totalMinutes = endTotalMinutes - startTotalMinutes;// 转换为小时和分钟int hours = totalMinutes / 60;int minutes = totalMinutes % 60;return new int[]{hours, minutes};}
}public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int a = scanner.nextInt();int b = scanner.nextInt();int c = scanner.nextInt();int d = scanner.nextInt();// 创建游泳时间计算器对象SwimmingTimeCalculator calculator = new SwimmingTimeCalculator(a, b, c, d);// 计算游泳时长int[] result = calculator.calculateSwimmingTime();// 输出结果System.out.println(result[0] + " " + result[1]);scanner.close();}
}

面向对象设计要点总结

  1. 封装性:每个类都将数据和操作封装在一起,外部只需通过公共接口访问
  2. 单一职责:每个类只负责一个特定的功能
  3. 可复用性:这些类可以在其他程序中重复使用
  4. 可维护性:修改内部实现不会影响外部调用
  5. 清晰的接口:通过构造函数和方法名明确表达类的用途
http://www.jsqmd.com/news/393792/

相关文章:

  • 2026污水提升泵站厂家推荐排行榜产能、专利、服务三维度权威解析 - 爱采购寻源宝典
  • 2026气缸感应开关厂家推荐宁波木三捷产能与专利双优 - 爱采购寻源宝典
  • 2026穴位贴敷治疗贴厂家推荐排行榜产能与专利双维度权威对比 - 爱采购寻源宝典
  • 2026测试仪厂家推荐排行榜从产能到专利全方位对比 - 爱采购寻源宝典
  • 2026年知名的恩施装修/恩施装修全屋整装销售厂家推荐哪家好(真实参考) - 品牌宣传支持者
  • 2026止水带厂家推荐排行榜产能、专利、服务三维度权威对比 - 爱采购寻源宝典
  • 2026铁艺围墙护栏厂家推荐 河北贞巧产能领先+专利护航+服务全面 - 爱采购寻源宝典
  • 2026胶水厂家推荐排行榜从产能到环保,权威解析行业标杆(产能规模+专利技术+环保认证) - 爱采购寻源宝典
  • 2026垃圾焚烧炉厂家推荐排行榜产能与专利双优企业领衔 - 爱采购寻源宝典
  • 2026水质检测仪厂家推荐 青岛明博环保科技领衔(产能/专利/环保三维度权威榜单) - 爱采购寻源宝典
  • 2026高压胶管厂家推荐排行榜产能与专利双优企业领跑全国 - 爱采购寻源宝典
  • 2026玻镁板厂家推荐排行榜从产能到环保的权威对比 - 爱采购寻源宝典
  • 2026年靠谱的光纤激光喷码机/CO2激光喷码机制造厂家推荐哪家靠谱 - 品牌宣传支持者
  • 2026机械密封厂家推荐排行榜产能与专利双优企业领跑 - 爱采购寻源宝典
  • 2026荷花苗厂家推荐排行榜安新县奥溪产能领先+专利护航+服务全面 - 爱采购寻源宝典
  • 2026物联网沙盘厂家推荐排行榜产能、专利、服务三维度权威解析 - 爱采购寻源宝典
  • 2026年知名的胶木球销售厂家采购建议选哪家 - 品牌宣传支持者
  • 刚刚,谷歌 Gemini 让 7.5 亿人成为「音乐家」:拍照出歌,免费!
  • 2026足浴包厂家推荐排行榜产能与专利双优的权威选择 - 爱采购寻源宝典
  • 2026年比较好的钢板预处理线真实参考销售厂家参考怎么选 - 品牌宣传支持者
  • 2026磁尺位移传感器厂家推荐排行榜产能与专利双维度权威解析 - 爱采购寻源宝典
  • 2026钢格栅厂家推荐排行榜从产能到专利的权威对比 - 爱采购寻源宝典
  • 杰理之耳机发射器【篇】
  • 2026橡胶止水带厂家推荐排行榜产能、专利、服务三维度权威解析 - 爱采购寻源宝典
  • 格式总出错?8个AI论文网站测评:专科生毕业论文+开题报告高效工具推荐
  • 亲测好用 9个降AIGC软件测评:本科生降AI率必备工具推荐
  • 2026柴油发电机出租厂家推荐排行榜产能与专利双优企业领跑 - 爱采购寻源宝典
  • 2026高压胶管厂家推荐排行榜产能与专利双维度对比 - 爱采购寻源宝典
  • 二阶时间重新分配同步挤压变换:应用于Draupner波分析附Matlab代码
  • DeepChat在C++高性能编程中的应用:智能优化建议