0

作为一种练习,我正在开发一个解决著名的中学勾股定理的应用程序,a squared + b squared = c squared。不幸的是,在我看来,即将到来的答案与实际答案无关。这是“解决”操作期间使用的代码。

- (IBAction)solve {
 int legoneint;
 int legtwoint;
 int hypotenuseint;

 int lonesq = legoneint * legoneint;
 int ltwosq = legtwoint * legtwoint;
 int hyposq = hypotenuseint * hypotenuseint;

 hyposq = lonesq + ltwosq;

 if ([legone.text isEqual:@""]) {
  legtwoint = [legtwo.text intValue];
  hypotenuseint = [hypotenuse.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", legoneint];
  self.view.backgroundColor = [UIColor blackColor];
 }
 if ([legtwo.text isEqual:@""]) {
  legoneint = [legone.text intValue];
  hypotenuseint = [hypotenuse.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", legtwoint];
  self.view.backgroundColor = [UIColor blackColor];
 }
 if ([hypotenuse.text isEqual:@""]) {
  legoneint = [legone.text intValue];
  legtwoint = [legtwo.text intValue];

  answer.text = [NSString stringWithFormat:@"%d", hypotenuseint];
  self.view.backgroundColor = [UIColor blackColor];
 }
}

顺便说一句,legone, legtwo, and hypotenuse所有代表UITextField对应于直角三角形的每个数学部分的 。 AnswerUILabel那个告诉,你猜对了,答案。有没有人看到程序中的任何缺陷?提前致谢!

4

1 回答 1

6

没有仔细检查程序,但在第一行已经有一个大问题:

int lonesq = legoneint * legoneint;
int ltwosq = legtwoint * legtwoint;
int hyposq = hypotenuseint * hypotenuseint;

这个变量是使用仍然没有分配的变量定义的。您需要设置从文本字段中获取的变量的值,然后进行数学运算。C是一种顺序语言,一切都是从上到下执行的,你不能说“a = b c”,在程序的任何地方a都会是b c。

于 2010-05-12T21:02:56.557 回答