如何将两个文本字段值相乘而不将文本转换为整数或数字

时间:2013-09-03 09:49:54

标签: iphone ios objective-c uitextfield

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

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

我希望将number1number2相乘而不将它们转换为整数或数字。我正在执行以下操作

NSExpression *expression = [NSExpression expressionWithFormat:[NSString stringWithFormat:@"%@*%@",number1,number2]];
NSLog(@"Multiplication result is----%@",[expression expressionValueWithObject:nil context:nil]);

我不知道它是否正确。如果不正确,请告诉我如何做到这一点。

4 个答案:

答案 0 :(得分:3)

如果问题是在面试中。 面试官可能期望你编写一个方法来遍历两个数组并将字符相乘(逐个转换为整数)或(也识别所代表的字符以了解等效的整数)。

在Google上搜索有一些不同语言的示例。

JAVA

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

string multiplication

C ++

Multiplying two number arrays

这是采访中的一个常见问题。

答案 1 :(得分:3)

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

NSExpression *expression = [NSExpression expressionWithFormat:expressionFormat];

您在这里使用表达式格式为[NSString stringWithFormat:@"%@*%@",number1,number2];
如果要添加或减去number1和number2,则将*替换为+或 - 。这样你就得继续。

答案 2 :(得分: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_beachstone 写入NSUserDefaults,则可以通过回调将结果用于不同控制器的任何位置。

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

-(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年前提出的,但是这个公式语法在很多方面适用于我,在不同的应用中......

答案 3 :(得分:-1)

你不能乘以两个字符串。它不可能

为此,您必须使用Integer或使用

将其转换为NSNumber或int
[secondTextField.text intValue].



NSInteger number = [firstTextField.text integerValue]*[secondTextField.text integerValue];

这样你就可以做到。希望能帮到你