【问题标题】:Math equations in Objective C iOS developmentObjective C iOS 开发中的数学方程
【发布时间】:2011-12-25 06:00:36
【问题描述】:

我正在尝试开发一个入门应用程序只是为了习惯 Xcode 和 iOS 开发的一些实用程序。我正在尝试创建一个可以解决二次方程的应用程序。我试图在“计算”按钮操作下添加此代码。首先,我有“计算”,只需将三个输入相加。现在我试图让它解方程。这就是我到目前为止所说的。

-(IBAction) Calculate {

float x = ([A.text floatValue]);  
float y = ([B.text floatValue]);
float z = ([C.text floatValue]);

total.text =[NSString alloc]initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x;

}

我知道这不是完整的等式,但这是我目前所拥有的。我收到的错误是在分号所在的位置添加一个括号。如何使这更有效?我想创建一个solveEquation() 函数,但遇到了问题。我能做什么?

【问题讨论】:

标签: objective-c ios ios5


【解决方案1】:

你需要更多的括号。正确的语法是[object message],由于[NSString alloc]返回一个对象,你需要[[NSString alloc] initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x]initWithFormat:是另一个消息)。

【讨论】:

    【解决方案2】:

    你需要更多的括号!

    total.text = [[NSString alloc]initWithFormat:@"%.2f", -y+sqrtf(y*y-4*x*z)/2*x];
    

    括号表示您正在发送一条 Objective-C 消息。对于您发送的每条消息,您都需要一对括号。让我们这样分解:

    NSString *uninitializedString = [NSString alloc];
    NSString *initializedString = [uninitializedString initWithFormat:@"%.2f", x+y+z];
    total.text = initializedString;
    

    在第一行中,我们将alloc 消息发送到NSString 对象,该对象实际上是一个知道如何分配NSString 实例的 对象。但它确实初始化实例。它几乎只是为它们分配内存。

    在第二行中,我们向NSString 的这个已分配但未初始化的实例发送一条消息,告诉它通过格式化模板%.2f 来初始化自己。此消息返回 NSString 的初始化实例。

    最后,在第三行,我们使用 NSString 的初始化实例。

    显然,总是需要一个中间变量来保存一个已分配但未初始化的对象是很乏味的。所以我们通过获取第一条消息的结果并直接向它发送消息来消除它:

    total.text = [[NSString alloc] initWithFormat:@"%.2f", x+y+z];
    

    【讨论】:

    • 我还要补充一点,使用更简单的格式字符串更容易看到这样的错误。您可以考虑将一些变量设置为-y+sqrtf(y*y-4*x*z)/2*x,然后在initWithFormat: 中使用它,以便您可以更轻松地解析它。
    • 非常感谢。你们真的会帮助我。我感谢大家的专业知识!
    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2014-04-05
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多