1

我正在尝试编写一个修改分数的程序,我需要确保“-”负号仅正确输出一次。如果用户输入一个分子和一个分母并将它们都作为负数,我无法显示-1/-2。同样只有一个负数,我不能显示 1/-2。我想出的解决方案是使用 Math.abs 从 num 和 den 中删除负数,然后在输出期间添加负数 IF Math.abs 只需要使用一次。如果它被使用了两次,我将包含仅输出 num 和 den 并删除负数的逻辑。 我如何记录 Math.abs 的使用频率,并防止在用户为 num 或 den 或两者输入正数时出现误报。

我的代码目前只做转换为绝对值的工作,所以我没有什么可以显示来保持计数。

snum = Math.abs(num);

* 其中 num 是用户输入的数字,snum 是绝对转换后的数字。

任何帮助,将不胜感激。

谢谢, 因格斯

4

3 回答 3

5

如果分母为负,只需翻转两者的符号即可。

于 2012-01-26T22:39:41.290 回答
0

不,内部表示中的减号保持不变,只有输出被破坏。这是我的解决方案:

String sign = (num * denom < 0)? "-" : "";
System.out.println(sign + Math.abs(num) + "/" + Math.abs(denom));
于 2012-01-26T22:33:57.627 回答
0

伪代码:

if numerator < 0 and denominator < 0 then
   numerator = -numerator
   denominator = -denominator
   sign = '+'
elsif numerator < 0 then
   numerator = -numerator
   sign = '-'
elsif denominator < 0 then
   denominator = -denominator
   sign = '-'
end if

print sign, numerator, '/', denominator
于 2012-01-26T22:35:55.313 回答