我为我的OOP课程制作了一个程序,它执行以下操作:
我的计划如下:
我对此要求感到有点困惑:
static void printComplexNumber(ComplexNumber n)
该函数将打印作为
形式的参数传递的复数编号对象realPart + imaginaryPart i
realPart
只有在为负时才应签名。如果realPart
为正数,则imaginaryPart
和imaginaryPart
之间的符号应为正数;如果imaginaryPart
为负数,则为负数。如果实部为零,则仅使用正确的符号打印虚部。如果虚部为零,则仅打印实部。如果虚部等于1,只需打印虚部的符号i
。
以下是我的问题:确定何时打印内容的最佳(最有效,最简洁,最简洁)方法是什么?
我的打印方法代码:
static void PrintComplexNumber(ComplexNumber n)
{
// what's the best thing to do here to determine what to print?
// if-else?
// to get my real value and complex value, I have methods of the
// ComplexNumber class entitled: GetRealPart(), and GetComplexPart().
}
答案 0 :(得分:1)
我只是通过调用这些方法来存储真实和复杂的部分(我假设整数或浮点数?)。然后使用if-else逻辑来弄清楚你需要什么。
在大多数情况下,对于像这样的事情,你只是设计逻辑并且它不是高性能的......(甚至是你真正需要在现实世界中编写的东西!)if-else语句应该是你所需要的一切。
我的建议:
我猜你对编程有点新意,所以请允许我添加一些建议......
如果你不是新手编程(也许只是C#?),请接受我的道歉。我并不是指居高临下或任何事情。
编辑:评论之后,我决定编辑我的答案。
你现在已经处于测试阶段(正如我上面提到的那样 - 你写过了SOMETHING)。好开始。现在你需要改进。
你的问题是双减,对吗?好吧,你有几个选择。
其中一个,如果你想在标志和实际部分之间留一个空格(要求暗示这是可能的),那么在真实部分之前的负号是不可用的,因为它将被标记为没有空格。因此,您可以使用某种absolute value函数来使数字(暂时)为正数。
像这样的东西(伪代码,对不起,因为我真的不知道C#):
double complexPart = getComplexPart();
double realPart = getRealPart();
bool realIsNegative = false;
if (Math.abs(realPart) != realPart) realIsNegative = true;
print complexPart + " ";
if (realIsNegative) print "- ";
else print "+ ";
print Math.abs(realPart);
它有点笨拙,如果你使用像the conditional ternary operator这样的东西和更好的缩进,它可能更整洁。但希望这有点意义,并会让你开始。
答案 1 :(得分:1)
我将回答你的基本问题,即当存在这样令人困惑或复杂的情况时该怎么做:你可以系统地解决它。
我所做的是首先将其分解为部分,无论多么冗长(只要你有时间)。所以我们说,我们将输出分为:
[RealSign] [RealPart] [ImSign] [赋予] [iSymbol]
然后我们通过写下规则来分析每个人的显示时间:
从这里开始,你可以开始简化这些东西。
答案 2 :(得分:0)
对于符号条件,您可以将ToString()与formatting一起使用。 这样就可以使用if - else来处理零和一个案例。