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

ありがとうございます:) –

+0

'decimalDigitCharacterSet'には0以上9以上の*が含まれているので、これは正しく動作しません。他のスクリプト/言語の数字も含みます。また、入力が負の場合(これは要件として規定されていませんがどちらかといえば考慮する必要があります)、失敗します。 – dreamlax

+0

それは本当だと思います。同じ基本的な方法を、 ' - '(とその点については '。')を含む文字セットで簡単に使用できます。文字セットに実際にはここで失敗している非アラビア数字が含まれているという事実。しかし、実際には望ましい状況もあります。 –

4

使用NSNumberFormatter:

これは私のソースコードです。入力パラメータが有効な数値でない場合、導出された数はゼロになります。

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

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

私はXcodeのに新しいです。このコードを書くべき場所をもっと教えてください。 –

+0

firstStringを取得した直後。つまりNSString * firstString = textFiled1.textの後。 intの代わりにnum1をNSNumberとして定義してください。 – mbh

+0

私はNSNumber(互換性のないポインタ型の初期化)にNSStingを持っていますが、まだ文字を受け入れずに動作します。しかし、私が望むのは、文字のみの数字を受け入れないということです。私を手伝ってくれますか? –

関連する問題