【问题标题】:Quick Multiplication Question - Cocoa快速乘法问题 - 可可
【发布时间】:2010-12-08 05:12:03
【问题描述】:

我还在学习,只是卡住了。我希望用户输入任何数字,结果,我的程序会做这个等式:

x = 5*y

(y是用户添加的数字,x是结果)

我该怎么做?我不确定是否应该添加int 或NSString。我应该使用哪个,我应该在头文件中输入任何内容吗?

【问题讨论】:

    标签: objective-c cocoa integer


    【解决方案1】:

    我不确定是否应该添加 int 或 NSString。

    嗯,其中一个是数字类型,另一个是文本类型。你如何乘以文本? (除了重复。)

    你需要一个数字类型。

    我会提防int,因为它只能保存整数。用户无法输入“0.5”得到2.5;当您将“0.5”转换为int 时,小数部分将被删除,只留下整数部分,即 0。然后将 5 乘以 0,返回给用户的结果将是0.

    使用double。那是浮点类型;因此,它可以保存小数值。

    ...我应该在头文件中输入任何内容吗?

    是的,但是您输入的内容取决于您是否要使用 Bindings(假设您真的在谈论 Cocoa 而不是 Cocoa Touch)。

    没有绑定,声明一个出口到你要从中检索乘数的文本字段,另一个到你要放入产品的文本字段。向输入文本字段发送doubleValue 消息以获取乘数,并向输出文本字段发送setDoubleValue: 消息和产品。

    使用 Bindings,声明两个包含 double 值的实例变量(同样,一个用于乘数,一个用于乘积)以及公开实例变量的属性,然后合成属性,最后绑定文本字段' value 绑定到这些属性。

    【讨论】:

      【解决方案2】:

      如果您从 UI 中检索 NSString,那么这很简单:

      NSString * answer = [NSString stringWithFormat:@"%d", [userInputString integerValue]*5];
      

      【讨论】:

        【解决方案3】:

        这可以在没有任何 Objective C 的情况下完成。也就是说,由于 Objective-C 是 C 的超集,所以可以在纯 C 中解决问题。

        #include <stdio.h>
        int main(void)
        {
            int i;
            fscanf(stdin, "%d", &i);
            printf("%d\n", i * 5);
        }
        

        在上面,fscanf 负责将在标准输入上读取的字符转换为数字并将其存储在i 中。

        但是,如果您在 char* 中有来自其他来源的字符并且需要将它们转换为 int,您可以使用 – initWithCString:encoding: 创建一个 NSString*,然后使用其 intValue 方法,但在这个根本不需要的特殊问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-25
          • 2017-05-06
          • 1970-01-01
          • 1970-01-01
          • 2021-12-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多