【Java实现经典算法】有理数四则运算
内容提要
本文介绍用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)”。
四则运算时使用什么形式的数进行计算?
四则运算的参数使用最初的分数形式,即左操作数的分子分母和右操作数的分子分母,按分数的四则规则运算,并返回整数+最简真分数形式的字符串。