2012-01-08 114 views
-1

我想检查用户是否给出的是一个数字,但不是字母的输入。当给出一个非数字值时,我想打印一个警告错误消息,如“格式不正确”。检查输入值

这是我的源代码:

-(IBAction)btnPressed{ 

    NSString *firstString = textFiled1.text; 
    NSString *secondString = textFiled2.text; 
    NSString *thirdString = textFiled3.text; 

    int num1; 
    int num2; 
    int num3; 

    int output; 

    num1 = [firstString intValue]; 
    num2 = [secondString intValue]; 
    num3 = [thirdString intValue]; 

    output = (num1 + num2)/num3; 

    lable1.text = [NSString stringWithFormat:@"%d",output]; 
} 

回答

0

这是我会怎么做:

NSCharacterSet *nonNumbers = [[NSCharacterSet decimalDigitCharacterSet] invertedSet]; 
if ([firstString rangeOfCharacterFromSet:nonNumbers].location != NSNotFound) { 
    // firstString has non-number characters in it! 
} 
+0

感谢它的工作原理:) – 2012-01-09 01:09:41

+0

虽然这不能正常工作,因为'decimalDigitCharacterSet'包含*不仅仅是0到9 *,它还包含其他脚本/语言中的数字。而且,如果输入是负值(这不是规定的要求,但必须考虑任何一种方式),这将失败。 – dreamlax 2012-01-09 01:14:43

+0

我想这是真的。使用包含' - '(和'。'的字符集)的基本方法很容易。字符集包含非阿拉伯数字的事实确实是一个失败的地方。但是,在某些实际可能需要的情况下。 – 2012-01-09 01:44:48

4

使用NSNumberFormatter。如果输入参数不是有效的数字,派生的数字将为零。

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
[f setNumberStyle:NSNumberFormatterDecimalStyle]; 
num1 = [f numberFromString:firstString]; 
[f release]; 

if (num1 == nil) { 
// throw exception 
} 
+0

我是新来的Xcode。你能帮我多写一些代码吗? – 2012-01-08 22:21:23

+0

刚刚获得firstString后。即在NSString * firstString = textFiled1.text之后;确保你将num1定义为NSNumber,尽管不是int。 – mbh 2012-01-08 22:24:38

+0

我有NSSting到NSNumber(不兼容的指针类型初始化),但它的工作原理没有它仍然接受字母。但我想要的是它不接受字母数字。请问你能帮帮我吗? – 2012-01-09 00:34:35