FRQ2023Q2
2023 年 APCSA FRQ 第 2 题(Sign 类),本题主要考查字符串操作(String Manipulation)、构造函数设计以及逻辑运算。以下是该题的详细解析: Part (a): Sign 类结构与逻辑解析 本题要求完整实现 Sign 类,包含三个核心部分:构造函数、numberOfLines 方法和 getLines 方法。 1. 构造函数 (Constructor) 目标:存储消息内容和每行最大宽度。 实现思路:定义两个私有成员变量(例如 String message 和 int width),并在构造函数中进行初始化。 2. numberOfLines 方法 逻辑:根据总字符数和每行宽度计算所需行数。 公式推导: 如果消息长度为 0,返回 0。 否则,行数 = (message.length() + width - 1) / width(这是整数除法实现向上取整的标准写法)。 例如:宽度为 3,消息为 8 字符,(8 + 3 - 1) / 3 = 10 / 3 = 3。 3. getLines 方法 逻辑:将长字符串切分成多段,每段长度为 width,段与段之间用 ; 连接。 实现思路: 首先检查字符串是否为空,若为空返回 null。 使用 StringBuilder 或 String 拼接来构建结果。 利用循环,步长为 width,使用 substring 方法截取字符块。 关键处理:在截取块之间添加 ;,但要注意最后一个块之后不能有分号。 解题关键点与避坑指南 边界条件处理: 空字符串:题目明确说明若消息为空字符串,numberOfLines 应返回 0,getLines 应返回 null。这是最常见的丢分点。 最后一行长度:截取时需注意,最后一行可能不足 width。使用 Math.min(startIndex + width, message.length()) 作为 substring 的结束索引可以完美解决这个问题。 分号处理:题目要求分号仅作为块与块之间的分隔符。最简单的逻辑是:在循环中处理时,如果当前是第一个块,不加分号;若后续块添加,则先添加分号再添加字符。 String 截取技巧:熟练掌握 substring(start, end) 方法是实现 getLines 的基础,务必确保 start 和 end 的边界计算准确。 总结 这道题看似简单,但对逻辑缜密度要求很高。特别是对“不满行”和“结尾无分号”的处理,体现了对字符串边界条件的理解。如果你在代码实现中发现总是多出一个分号或最后一行截取报错,通常就是边界条件的计算出现了偏差。

爆火的“无审查”AI 视频模型来了!Sulphur 2 本地部署实测:8G 显存也能跑!完全免费开源 | 零度解说

0,66-Abi?! Der beste Abiturient aller Zeiten im Interview | Leo Eckl

FRQ2019Q1

FRQ2024Q3 ScoreBoard积分板

Building a Modern Hospital Management System in WPF - Part 1

FRQ2023Q4

FRQ2024Q2 WordChain单词链

OCR A Level Computer Science - 10 Questions To Try Before Paper 1 in 2026

But what is the Fourier Transform? A visual introduction.

FRQ2023Q1

Animation vs. Math

FINTECH ROADMAP 2026

半导体女王 AMD CEO苏姿丰Lisa Su:AI未来10年新发现将超过去30年总和!如何创造属于自己的运气?

English Essay: How to Write about ANY Essay Topic

Something is jamming GPS over Europe. Here's what we found

You're Reading an Classic Book in a Gothic Library with Rain Sounds | Dark Academia for Relax Mood

FRQ2025Q3

Ocean Waves for Deep Sleep LIVE 🌊 Rolling Waves & Dark Screen Reduce Anxiety, Stress & Sleep Aid

台大生挑戰大陸高考,能上北京大學嗎?【超難的廣東試卷】(上)@selling.brains

