【Java实现经典算法】有理数四则运算

💡 原文中文,约900字,阅读约需2分钟。
📝

内容提要

本文介绍用Java实现有理数四则运算:程序读入两个分数形式的有理数,依次计算和、差、积、商,并按“有理数1 运算符 有理数2 = 结果”格式输出;结果化为最简形式“k a/b”,负数加括号,除数为0时输出Inf。实现思路为先分解分数、约分并处理整数部分,再按分数规则运算。

🔎

延伸解读

输出格式的细节处理

文章强调结果必须化为最简形式“k a/b”,负数加括号,除数为0输出Inf。这些规则看似简单,但容易在边界情况出错:例如整数结果应只输出k,真分数部分为0时省略,负号位置需统一。实现时需在格式化阶段单独处理这些分支,避免直接拼接字符串导致格式错误。

运算与格式化解耦

思路部分指出四则运算使用最初的分数形式作为参数,运算后再返回整数加最简真分数的字符串。这种设计将计算逻辑与输出格式化分离,便于复用和测试。读者可借鉴此结构:先实现分数运算核心,再单独编写格式化函数,减少耦合。

约分与整数部分提取

分解分数时,整数部分由分子除以分母得到,真分数部分的分子通过求余获得,若整体不是最简还需除以最大公约数。注意负数的处理:负号只出现在分子前,约分和取余时需保持符号一致,否则可能得到错误的整数部分或分数部分。

❓

Q&A

如何用Java实现两个有理数的四则运算?

程序读入两个分数形式的有理数,先分解分数并约分,再按分数规则计算和、差、积、商,最后按指定格式输出最简结果。

有理数四则运算的输入输出格式是什么?

输入在一行中按“a1/b1 a2/b2”格式给出两个分数形式的有理数;输出四行,每行格式为“有理数1 运算符 有理数2 = 结果”,结果化为最简形式“k a/b”,负数加括号,除数为0时输出“Inf”。

结果中的有理数如何化为最简形式?

将分数分解为整数部分和真分数部分:整数部分为分子除以分母的值,真分数部分的分子为分子对分母求余,若整体不是最简则同时除以最大公约数化为最简。

除法运算时除数为0怎么处理?

若除数的分子为0,则输出“Inf”。

输出负数时有什么特殊要求?

若结果为负数,则须加括号,例如“(-1 1/3)”。

四则运算时使用什么形式的数进行计算?

四则运算的参数使用最初的分数形式,即左操作数的分子分母和右操作数的分子分母,按分数的四则规则运算,并返回整数+最简真分数形式的字符串。

🏷️

标签

➡️

继续阅读