【发布时间】:2010-12-08 05:12:03
【问题描述】:
我还在学习,只是卡住了。我希望用户输入任何数字,结果,我的程序会做这个等式:
x = 5*y
(y是用户添加的数字,x是结果)
我该怎么做?我不确定是否应该添加int 或NSString。我应该使用哪个,我应该在头文件中输入任何内容吗?
【问题讨论】:
标签: objective-c cocoa integer
我还在学习,只是卡住了。我希望用户输入任何数字,结果,我的程序会做这个等式:
x = 5*y
(y是用户添加的数字,x是结果)
我该怎么做?我不确定是否应该添加int 或NSString。我应该使用哪个,我应该在头文件中输入任何内容吗?
【问题讨论】:
标签: objective-c cocoa integer
我不确定是否应该添加
int或NSString。
嗯,其中一个是数字类型,另一个是文本类型。你如何乘以文本? (除了重复。)
你需要一个数字类型。
我会提防int,因为它只能保存整数。用户无法输入“0.5”得到2.5;当您将“0.5”转换为int 时,小数部分将被删除,只留下整数部分,即 0。然后将 5 乘以 0,返回给用户的结果将是0.
使用double。那是浮点类型;因此,它可以保存小数值。
...我应该在头文件中输入任何内容吗?
是的,但是您输入的内容取决于您是否要使用 Bindings(假设您真的在谈论 Cocoa 而不是 Cocoa Touch)。
没有绑定,声明一个出口到你要从中检索乘数的文本字段,另一个到你要放入产品的文本字段。向输入文本字段发送doubleValue 消息以获取乘数,并向输出文本字段发送setDoubleValue: 消息和产品。
使用 Bindings,声明两个包含 double 值的实例变量(同样,一个用于乘数,一个用于乘积)以及公开实例变量的属性,然后合成属性,最后绑定文本字段' value 绑定到这些属性。
【讨论】:
如果您从 UI 中检索 NSString,那么这很简单:
NSString * answer = [NSString stringWithFormat:@"%d", [userInputString integerValue]*5];
【讨论】:
这可以在没有任何 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 方法,但在这个根本不需要的特殊问题。
【讨论】: