-3

我有两个文本字段,用户输入了值。我可以得到如下文本字段的值

NSString *number1 = firstTextField.text;
NSString *number2 = secondTextField.text;

我想相乘number1并且number2不将它们转换为整数或数字。我正在做如下

NSExpression *表达式 = [NSExpression 表达式WithFormat:[NSString stringWithFormat:@"%@*%@",number1,number2]]; 
NSLog(@"乘法结果是----%@",[表达式表达式ValueWithObject:nil context:nil]);

我不知道它是否正确。如果它不正确,请给我建议如何可能。

4

4 回答 4

3

如果问题是在面试中。面试官可能希望您编写一个方法来遍历两个数组并将字符相乘(将一个一个转换为整数)或(也识别表示的字符以知道等效的整数)。

在谷歌上搜索有一些不同语言的例子。

JAVA

http://csjobinterview.wordpress.com/2012/04/05/string-multiplication/

字符串乘法

C++

将两个数字数组相乘

这是面试中常见的问题。

于 2013-09-03T10:03:21.027 回答
3

通过使用 NSExpression 是一种乘/加/减两个数字字符串而不将它们转换为整数或数字的方法。

NSExpression *expression = [NSExpression expressionWithFormat:expressionFormat];

您在这里使用 expressionFormat as [NSString stringWithFormat:@"%@*%@",number1,number2];
如果要添加或减去 number1 和 number2,请将 * 替换为 + 或 -。这样,您必须继续。

于 2013-09-12T10:34:35.373 回答
1

我只是使用了文本字段...并使用了用户输入到这些文本字段中的值...这是一个对我有用的计算示例...在此示例中,用户试图找到他们需要的海滩石的体积订购...公式非常简单。确保使用数学括号 () 来区分操作顺序...

-(IBAction)calculate_beachstone:(id)sender {

float floatanswer =

   ([area1.text floatValue])+([area2.text floatValue])+([area3.text floatValue])+([area4.text floatValue])+([area5.text floatValue])+([area6.text floatValue])+([area7.text floatValue])+([area8.text floatValue])+([area9.text floatValue])+([area10.text floatValue]))

  *([beachstone_depth.text floatValue])/12)/27);

NSString *stringRectResult=[[NSString alloc]
                            initWithFormat:@"%.1f",floatanswer];

answer_beachstone.text=stringRectResult;
}

我正在添加在文本字段中找到的文本(用户只能使用数字进行输入 - 自定义键盘)......在这个例子中,我最多可以添加 10 个字段......然后我使用 *(乘法)在此示例中应用深度,并将其转换回文本字符串,以便我可以在其他地方显示结果...事实上,如果您将此部分写入answer_beachstoneNSUserDefaults,您可以通过调用在不同控制器中的任何位置使用结果回来了。

如果你有兴趣,这就是我是如何做到的......

-(IBAction)save_answer_beachstone:(id)sender {

save_answer_beachstone = [[NSString alloc] initWithString:answer_beachstone.text];
[answer_beachstone setText:save_answer_beachstone];
NSUserDefaults *save = [NSUserDefaults standardUserDefaults];
[save setObject:save_answer_beachstone forKey:@"save_answer_beachstone"];

}

然后我可以在 viewDidLoad 内的任何控制器中使用生成的“答案”...

[answer_beachstone setText:[[NSUserDefaults standardUserDefaults] objectForKey:@"save_answer_beachstone"]];

我知道这个问题是 4 年前提出的,但是这个公式语法在很多方面对我有用,在各种应用程序中......

于 2017-11-15T04:05:39.030 回答
-1

您不能将两个字符串相乘。这是不可能的。

为此,您必须Integer使用或使用将其转换为或 int NSNumber

[secondTextField.text intValue].

NSInteger number = [firstTextField.text integerValue]*[secondTextField.text integerValue];
于 2013-09-03T09:57:25.127 回答