2012-01-08 112 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