私はObjective Cに関するStephan Kochanの本を進めています。私は誰かが助けてくれることを望んでいる問題に立ち向かいました。ここで私のObjective Cコードに関するいくつかのポインターがあります。
は私がに取り組んできたフラクションクラスから私の印刷方法です:
-(void) print: (BOOL) reduce {
Fraction *resultReduced = [[Fraction alloc] init];
[resultReduced setTo:numerator over:denominator];
if (denominator < 0) {
numerator = -numerator;
denominator = -denominator;
}
if (reduce) {
[resultReduced reduce];
if (resultReduced.denominator < 0) {
resultReduced.denominator = -resultReduced.denominator;
resultReduced.numerator = -resultReduced.numerator;
}
else if (resultReduced.denominator == 1)
NSLog (@"%i", resultReduced.numerator);
else if (resultReduced.numerator == 0)
NSLog (@"0");
else if (resultReduced.numerator == resultReduced.denominator)
NSLog (@"1");
else if (resultReduced.numerator > resultReduced.denominator || resultReduced.numerator < 0) {
[resultReduced improper];
if (resultReduced.whole == 0)
NSLog (@"%i/%i", resultReduced.numerator, resultReduced.denominator);
else if (resultReduced.whole < 0 && resultReduced.numerator < 0) {
resultReduced.numerator = -resultReduced.numerator;
NSLog (@"%i %i/%i", resultReduced.whole, resultReduced.numerator, resultReduced.denominator);
}
else
NSLog (@"%i %i/%i", resultReduced.whole, resultReduced.numerator, resultReduced.denominator);
}
else
NSLog (@"%i/%i", resultReduced.numerator, resultReduced.denominator);
}
else
NSLog (@"%i/%i", numerator, denominator);
}
問題は、私は2/3から15/4を引く場合、私が得ることを-37であります/ 12このメッセージ[resultReduced improper]を使って-3 1/12として表示したいのですが、動作していないようです。私はそれがない、その後場合だけに
else if (resultReduced.numerator > resultReduced.denominator || resultReduced.numerator < 0) {
を変更した場合。
誰かが私に説明してくださいなぜ作品を使用する場合は、しかし、他の場合はありませんか?
デバッガでプログラムをステップ実行することで問題を見つけることができます。 –
どうすればいいですか? – CloudDweller
Xcodeのデバッグに関する[リンクはこちら](https://developer.apple.com/library/mac/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/Debugging/Debugging.html)をドキュメントにリンクします。 – user1118321