0

学校向けの推測アプリを作ろうとしています。

-(IBAction)check:(id)sender
{
    if (answerField.text.length > 0)
    {
        [self number];
    }
    else
    {
        UIAlertView *error = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:@"Please type in more than one chracter"
                              delegate:self
                              cancelButtonTitle:@"Okay!"
                              otherButtonTitles:nil];

        [error show];
    }
}
-(void)number
{

    for (int i = 0; i < 100; i++)
    {
        if (answerField.text > strNumber)
        {

            hlLabel.text = @"Guess Lower";
            answerField.text = @"";
        }
        if (answerField.text < strNumber)
        {

            hlLabel.text = @"Guess Higher";
            answerField.text = @"";
        }
    }


}

問題: forループが機能しません。一度だけチェックします。また、チェックするたびに、実際にはコンピュータの生成数よりも多いと思いますが、常に「GuessHigher」と表示されます。

その他の情報:テキストフィールドからキーボードをクリックするたびに、数値メソッドをチェックするメソッドがあります。

4

2 に答える 2

3

answerField.text数値ではなく、を返してNSStringいます。

試してみてくださいanswerField.text.intValue

そしてstrNumber、それが機能するためには整数でなければなりません、ところで。

于 2012-12-24T02:24:06.760 に答える
0

あなたがやろうとしていることを理解するのに少し時間がかかりました。しかし、100回までの試行回数を推測するために、ユーザーにフィールドに数値を入力させようとしているだけだと思います。そんな感じ。

ただし、forループは、ユーザーに何かを再試行させる方法ではありません。必要なのは、各試行をカウントするオブジェクト(つまり、ivar)に保存されている状態です。

ここでの2番目の問題は、ここでは意味をなさない文字列を数値的に比較しているように見えることです。数値を比較したい。

したがって、プログラムは次のようになります。

-(IBAction)check:(id)sender
{
    if (answerField.text.length > 0)
    {
        [self checkFieldValueAgainstCorrectAnswer]; // use better naming
    }
    else
    {
        UIAlertView *error = [[UIAlertView alloc]
                              initWithTitle:@"Error"
                              message:@"Please type in more than one chracter"
                              delegate:self
                              cancelButtonTitle:@"Okay!"
                              otherButtonTitles:nil];

        [error show];
    }
}

-(void)checkFieldValueAgainstCorrectAnswer
{
    NSUInteger fieldValue = [answerField.text unsignedIntegerValue];
    NSUInteger correctValue = [strNumber unsignedIntegerValue];
    if (fieldValue > correctValue) {
        // guess lower
    } else if(fieldValue < correctValue) {
        // guess higher
    } else {
        // you won!
        return;
    }
    answerField.text = @"";
    attempts++;
    if (attempts > 100) {
        // Too many attemps, you lost!
    }
 }
于 2012-12-24T05:07:48.943 に答える